SQL クエリのヘルプが必要です。
私は2つのテーブルPerson_Table
とPersonAlias_Table
. 最初のテーブルのperson_idとuniqe_idは主キーであり、エイリアス テーブルでもperson_idとuniqe_id とactivity_codeが主キーです。Alias テーブルにあるがperson テーブルにないデータを検索したい。
select *
from PersonAlias_Table PA
left outer join Person_Table P on PA.person_id = P.person_id
and PA.uniqe_id = P.uniqe_id
where P.uniqe_id is null
これを試して
これを行う最良の方法はDBMSによって異なり、次のいずれかを使用できますNOT EXISTS
。LEFT JOIN/IS NULL
存在しない
SELECT *
FROM PersonAlias_Table pat
WHERE NOT EXISTS
( SELECT 1
FROM Person_Table pt
WHERE pt.Person_ID = pat.Person_ID
AND pt.Uniqe_ID = pat.Uniqe_ID
)
LEFT JOIN / IS NULL
SELECT *
FROM PersonAlias_Table pat
LEFT JOIN Person_Table pt
ON pt.Person_ID = pat.Person_ID
AND pt.Uniqe_ID = pat.Uniqe_ID
WHERE pt.Person_ID IS NULL
この回答によると、MySQLNOT EXISTS
は少し効率が悪く、SQL ServerLEFT JOIN / IS NULL
は効率が低く、PostgreSQLとOracleでは両方の方法が同じであるため、個人的な好みです。