2016-12-13 13 views
0

new tableのレコードと一致するレコードを除いてmaster tableからレコードを選択しようとしていますが、new tableold tableに一致するレコードは除きます。 urnフィールドは、それらの間の共通の分母です。別のレコードを除外する1つのテーブルからレコードを取得

私のクエリはこれです:

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

私は、これは動作するはずです確信しているが、それは結果の正確な量を返しません。

どのような提案も大歓迎です!いいえがあるので、私は明示的なjoinexistsを好む

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); 

:あなたはこのようなクエリの場合、おそらく

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

答えて

0

、私はexistsなくexistsを思うだろうnewに重複する危険があると、結果セットに重複が生じます。また、クエリの目的をより密接に表すことがわかりました。

1

ようWHERE条件が欠落している

関連する問題