SQL Server-获取具有特定值的列
我有一个SQL查询,返回:SQL Server-获取具有特定值的列,sql,sql-server,Sql,Sql Server,我有一个SQL查询,返回: id | value 1 a 1 a 1 b 2 a 2 a 我只想得到只有值a的id。那么id 2 如何执行此操作?您可以使用aggregation和having子句检查给定id的所有行是否都具有值“a”: 使用计数: 或者使用Sum 您可以使用aggregation和having子句检查给定id的所有行是否都具有值“a”: 使用计数: 或者使用Sum 使用下一个代码
id | value
1 a
1 a
1 b
2 a
2 a
我只想得到只有值a的id。那么id 2
如何执行此操作?您可以使用aggregation和having子句检查给定id的所有行是否都具有值“a”: 使用计数: 或者使用Sum
您可以使用aggregation和having子句检查给定id的所有行是否都具有值“a”: 使用计数: 或者使用Sum 使用下一个代码:-
Select id
from #test
group by id
having sum (case when value = 'a' then 0 else 1 end) = 0
线索为“a”传递0,另一个传递1,然后求和等于0使用下一个代码:-
Select id
from #test
group by id
having sum (case when value = 'a' then 0 else 1 end) = 0
线索是“a”通过0,另一个通过1,然后求和等于0,这比@gurvinder Singh的答案稍微慢一点,但如果性能不是您的首要任务,那么可读性会更高
CREATE TABLE tmp (id int, [value] char(1))
INSERT INTO tmp values (1,'a'),(1,'a'),(1,'b'),(2,'a'),(2,'a')
SELECT DISTINCT id
FROM tmp a
WHERE [value] = 'a'
AND id NOT IN (
SELECT id FROM tmp
WHERE [value] <> 'a')
这比@gurvinder Singh的答案稍微慢一点,但如果性能不是您的首要任务,则可读性会更高
CREATE TABLE tmp (id int, [value] char(1))
INSERT INTO tmp values (1,'a'),(1,'a'),(1,'b'),(2,'a'),(2,'a')
SELECT DISTINCT id
FROM tmp a
WHERE [value] = 'a'
AND id NOT IN (
SELECT id FROM tmp
WHERE [value] <> 'a')