2016-12-13 47 views
0

我試圖從master table中選擇記錄,它們與new table中的記錄匹配,但不包括new tableold table匹配的記錄。 urn字段是它們之間的共同標準。從一張表中獲取記錄,不包括其他記錄

我的查詢是這樣的:

SELECT * 
FROM `master` 
JOIN `new` ON `master`.`urn` = `new`.`urn` 
LEFT JOIN `old` ON `old`.`urn` = `new`.`urn` 

我敢肯定這應該工作,但它並沒有返回結果的正確的金額。

任何建議非常歡迎!

回答

0

你缺少WHERE條件可能喜歡

SELECT * 
FROM `master` 
JOIN `new` ON `master`.`urn` = `new`.`urn` 
LEFT JOIN `old` ON `old`.`urn` = `new`.`urn` 
WHERE `old`.`urn` IS NULL; 
1

對於這樣的查詢,我想exists,而不是exists

select m.* 
from master m 
where exists (select 1 from new n where n.urn = m.urn) and 
     not exists (select 1 from old o where o.urn = m.urn); 

我寧願exists一個明確的join因爲沒有在new中重複的危險將導致結果集中出現重複。我也發現它更接近地代表了查詢的目的。