有人可以提供如何使用联接编写以下 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
有人可以提供如何使用联接编写以下 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
(or 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
)