可以请一些人提供如何使用联接编写以下sql查询的方法。我不希望尽量不要使用 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)构造。
NOT NULL
NOT EXISTS
您还可以使用以下命令:
SELECT short_code FROM domain1 EXCEPT SELECT short_code FROM domain2
这既不使用NOT IN也不使用WHERE(甚至不使用联接!),但是这将删除所有重复项(domain1.short_code如果有)。
NOT IN
WHERE
domain1.short_code