搜索不包含特定值的记录

Dan*_*lle 1 sql t-sql sql-server group-by not-exists

我有一个表,其中包含来自其他两个表的 ID。那是两个整数。

CustomerId  SectionId
====================
1           1
1           2
1           3
2           2
2           3
3           1
3           2
3           3
4           2
4           3
Run Code Online (Sandbox Code Playgroud)

我正在寻找的是那些缺少 SectionId=1 的记录。对于上面的示例,我需要检索 CustomerId 2 和 4。

我不能在 SectionId <> 1 的地方执行 Select customer ID,因为它会给我带来所有记录(1 到 4)。我特别需要那些,独立于他们拥有的 SectionId,缺少 SectionId=1

谢谢。

for*_*pas 5

你需要NOT EXISTS

SELECT DISTINCT t1.CustomerId
FROM tablename t1
WHERE NOT EXISTS (SELECT 1 FROM tablename t2 WHERE t2.CustomerId = t1.CustomerId AND t2.SectionId = 1)
Run Code Online (Sandbox Code Playgroud)

或者,使用条件聚合:

SELECT CustomerId
FROM tablename
GROUP BY CustomerId
HAVING COUNT(CASE WHEN SectionId = 1 THEN 1 END) = 0
Run Code Online (Sandbox Code Playgroud)