[英]PHP/MySQL Have some rows in SELECT result have different values for a particular column when sorting
[英]mysql from a result, how to select rows that have same values in 2 column
在我的 MySQL 数据库中,以下查询
SELECT c.cas_number, c.description c_desc,
sm.description sm_desc, sm.id sm_id, sm.component_id,
c.id
FROM starting_material sm
join component c ON c.id=sm.component_id;
返回部分数据如下
从这个结果中,我试图 select 对两列 c_decs 和 sm_desc 具有相同值的所有行
我试过这个查询,但它只返回 2 行,但我可以实际看到有很多行匹配
select r.cas_number, r.c_desc, r.sm_desc
from (
SELECT c.cas_number, c.description c_desc,
sm.description sm_desc, sm.id sm_id, sm.component_id,
c.id
FROM starting_material sm
join component c ON c.id=sm.component_id
) as r
where r.c_desc like r.sm_desc;
我也试过了,但结果中仍然只有 2 条记录。
SELECT c.cas_number, c.description, sm.description
FROM starting_material sm
join component c ON c.id=sm.component_id
where trim(c.description) = trim(sm.description);
更新:-
只有匹配的结果
尝试这样的事情
SELECT c.cas_number, c.description, sm.description
FROM starting_material sm
join component c ON c.id = sm.component_id
where c.description = sm.description
谢谢,我做了以下步骤来找出问题
通过使用字符串比较 (STRCMP),我发现哪些记录不匹配。 除了 2 条记录(值 0)之外,几乎所有记录都不匹配(值为 1)
SELECT c.cas_number, c.description, sm.description, STRCMP(c.description, sm.description) FROM starting_material sm join component c ON c.id=sm.component_id;
事实证明,其中一列 sm.description 在末尾有一个回车符 \r
下面的查询有助于获取所有匹配的记录。
SELECT c.cas_number, c.description, sm.description FROM starting_material sm join component c ON c.id=sm.component_id
where sm.description like concat(c.description, '\r');
我用以下查询修复了回车
update starting_material set description=REPLACE(description,'\r','');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.