繁体   English   中英

mysql 从结果,如何 select 行在 2 列中具有相同的值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM