首页 > 解决方案 > 在另一列中选择具有特定条目的 ID

问题描述

抱歉,如果这存在于另一个问题中,但我无法找到它。说我有一张桌子

ID   Type
1     A
1     A
4     A
1     A
1     A
2     A
2     B
3     A
3     A
3     B
4     A
1     A
4     A

我想为所有行条目选择在 Type 列中只有条目“A”的 id。预期输出应该是:

ID
1
4

我试图这样做

select id 
from table 
order by id 
having Type = 'A'

但没有得到预期的结果。

标签: sqlsql-server

解决方案


聚合是一种方法,但您的HAVING子句需要更改:

SELECT ID
FROM yourTable
GROUP BY ID
HAVING MIN(Type) = 'A' AND MIN(Type) = MAX(Type);  -- sargable HAVING clause

演示

子句中的MIN/MAX相等检查HAVING确保任何给定的匹配ID在整个表中只有一个值。第一个MIN断言确保这个值是A


推荐阅读