59

結合を使用して次のSQLクエリを作成する方法を教えてください。未使用もちろん、出来れば状態の良い所も交換したいです

SELECT d1.Short_Code
FROM domain1 d1
WHERE d1.Short_Code NOT IN (
  SELECT d2.Short_Code
  FROM Domain2 d2
)

SQL Server 2008 を使用しています

4

3 に答える 3

83

この記事:

あなたに興味があるならそうかもしれません。

一言で言えば、このクエリ:

SELECT  d1.short_code
FROM    domain1 d1
LEFT JOIN
        domain2 d2
ON      d2.short_code = d1.short_code
WHERE   d2.short_code IS NULL

NOT NULL動作しますが、 (またはNOT EXISTS)構成よりも効率が低くなります。

これを使用することもできます:

SELECT  short_code
FROM    domain1
EXCEPT
SELECT  short_code
FROM    domain2

これはどちらNOT INも使用していませんWHERE(さらには結合も使用していません!)が、重複がdomain1.short_codeある場合はすべて削除されます。

于 2011-04-15T12:20:39.100 に答える
17
SELECT d1.Short_Code 
FROM domain1 d1
LEFT JOIN domain2 d2
ON d1.Short_Code = d2.Short_Code
WHERE d2.Short_Code IS NULL
于 2011-04-15T12:15:48.627 に答える
5

私ならNOT EXISTSこの場合を選びます。

SELECT D1.ShortCode
FROM Domain1 D1
WHERE NOT EXISTS
    (SELECT 'X'
     FROM Domain2 D2
     WHERE D2.ShortCode = D1.ShortCode
    )
于 2011-04-15T12:32:48.647 に答える