admin

如何使用join编写“(in)(ot)” SQL查询

sql

可以请一些人提供如何使用联接编写以下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


阅读 166

收藏
2021-05-10

共1个答案

admin

简而言之,此查询:

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如果有)。

2021-05-10