有人請提供如何使用連接編寫以下sql查詢。我不想使用不在以及如果可能我想代替其中條件以及。如何使用連接編寫「不在()」sql查詢
SELECT d1.Short_Code
FROM domain1 d1
WHERE d1.Short_Code NOT IN (
SELECT d2.Short_Code
FROM Domain2 d2
)
我使用SQL Server 2008
有人請提供如何使用連接編寫以下sql查詢。我不想使用不在以及如果可能我想代替其中條件以及。如何使用連接編寫「不在()」sql查詢
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
)
@Quassnoi,請您提供有效的方式書寫方式使用或者「NOT NULL」和/或「NOT EXISTS」 – Elangesh 2011-04-15 12:36:10
@Elan相同的查詢:您原來的查詢是剛剛好。只需在兩個表中的'short_code'上創建索引。 – Quassnoi 2011-04-15 12:38:52
@Quassnoi - 你假設他不需要任何來自domain2表的信息 – Aducci 2011-04-15 12:50:31