誰かが結合を使用して次のSQLクエリを記述する方法を提供してください。私はnot inを使用したくないし、可能であればwhere条件も置き換えたいと思う。
SELECT d1.Short_Code
FROM domain1 d1
WHERE d1.Short_Code NOT IN (
SELECT d2.Short_Code
FROM Domain2 d2
)
SQL Server 2008を使用しています
この記事:
あなたに興味があればかもしれません。
いくつかの言葉で、このクエリは:
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
のすべての重複を削除します。
SELECT d1.Short_Code
FROM domain1 d1
LEFT JOIN domain2 d2
ON d1.Short_Code = d2.Short_Code
WHERE d2.Short_Code IS NULL
私はNOT EXISTS
この場合。
SELECT D1.ShortCode
FROM Domain1 D1
WHERE NOT EXISTS
(SELECT 'X'
FROM Domain2 D2
WHERE D2.ShortCode = D1.ShortCode
)