0

SQL クエリのヘルプが必要です。

私は2つのテーブルPerson_TablePersonAlias_Table. 最初のテーブルのperson_iduniqe_idは主キーであり、エイリアス テーブルでもperson_idとuniqe_id とactivity_codeが主キーです。Alias テーブルにあるがperson テーブルにないデータを検索したい。

4

2 に答える 2

2
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

これを試して

于 2013-01-02T09:24:34.120 に答える
0

これを行う最良の方法はDBMSによって異なり、次のいずれかを使用できますNOT EXISTSLEFT 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では両方の方法が同じであるため、個人的な好みです。

于 2013-01-02T09:55:33.637 に答える