Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server-获取具有特定值的列_Sql_Sql Server - Fatal编程技术网

SQL Server-获取具有特定值的列

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 使用下一个代码

我有一个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

使用下一个代码:-

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')