有人请提供如何使用连接编写以下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