簡體   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