有人可以提供如何使用连接编写以下sql查询。我不想使用不在中,如果可能的话,我也想替换 where 条件。
SELECT d1.Short_Code
FROM domain1 d1
WHERE d1.Short_Code NOT IN (
SELECT d2.Short_Code
FROM Domain2 d2
)
我正在使用SQL Server 2008
答案 0 :(得分:57)
这篇文章:
如果您感兴趣,可能会感兴趣。
有几个词,这个查询:
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
上的所有重复项(如果有的话)。
答案 1 :(得分:14)
SELECT d1.Short_Code
FROM domain1 d1
LEFT JOIN domain2 d2
ON d1.Short_Code = d2.Short_Code
WHERE d2.Short_Code IS NULL
答案 2 :(得分:4)
在这种情况下,我会选择NOT EXISTS
。
SELECT D1.ShortCode
FROM Domain1 D1
WHERE NOT EXISTS
(SELECT 'X'
FROM Domain2 D2
WHERE D2.ShortCode = D1.ShortCode
)