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