【发布时间】:2017-09-18 17:10:57
【问题描述】:
我需要有关 SQL SELECT 查询的帮助。
我在下面有[Details] sql 表。我想选择具有匹配组 id 且在给定临时表中不存在的行
DetailID GroupID TemplateID DocumentID
------------------------------------------------------
1 A 2 NULL
2 A NULL 33
3 A 10 NULL *
4 B NULL 33
5 B 4 NULL *
6 C 2 NULL
7 C 4 NULL *
8 C NULL 55 *
@tmpDetails - 具有 TemplateID 和 DocumentID 的临时表
TemplateID DocumentID
---------------------------
2 NULL
NULL 33
我想从 @tmpDetail 表中选择 A、B 和 C 组中没有匹配的 TemplateID 和 DocumentID 的行
所以选择查询应该返回详细 ID 为 3、5、7、8 的行
下面的查询没有返回任何内容
SELECT * from Details D
WHERE D.GroupID IN ('A','B','C') AND NOT EXISTS
(SELECT d2.DetailID FROM Details d2
JOIN @tmpDetails t ON d2.TemplateID IS NOT NULL
AND d2.TemplateID = t.TemplateID
OR d2.DocumentID IS NOT NULL AND d2.DocumentID = t.DocumentID)
无论 JOIN 中的条件是什么,它都应该是 where 条件,但我确定如何编写该 SQL
【问题讨论】:
标签: sql sql-server tsql