这是不是关于NOT EXISTS和IN之间的区别的问题。 我似乎无法得到这个SQL工作正确。 逻辑似乎没问题,但我错过了一些东西。 我到处搜寻,甚至在我多年和几年的笔记中。不存在不返回行
一个名为companyAccountantRef的表有3个字段。 ID,CompanyID和AccountantID。 目前在表:
ID CompanyID AccountantID
8 6706 346388
9 6706 346256
10 6706 26263
11 363392 358951
那么这个SQL没有带回正确的行:
DECLARE @CompanyID INT = 363392
DECLARE @AccountIDs TABLE (ID INT)
INSERT INTO @AccountIDs (ID) VALUES (358951)
INSERT INTO @AccountIDs (ID) VALUES (26263)
SELECT @CompanyID AS CompanyID, a.ID
FROM @AccountIDs a
WHERE NOT EXISTS(
SELECT *
FROM CompanyAccountantRef
WHERE CompanyID = @CompanyID
AND AccountantID IN (SELECT ID FROM @AccountIDs))
应该带回
CompanyID AccountantID
363392 26263
是的,会计师可以有更多的比一家公司。 我在这里错过了什么?是否使用IN来打破它? 我尝试了几种不同的方式,包括没有运气的连接。
谢谢。
但是在不存在的表达式将有或没有表达。它并不依赖于@AccountIDs – Paparazzi