Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.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 对于具有给定值的行,仅返回在列B中找不到列A值的行_Sql_Sql Server - Fatal编程技术网

Sql 对于具有给定值的行,仅返回在列B中找不到列A值的行

Sql 对于具有给定值的行,仅返回在列B中找不到列A值的行,sql,sql-server,Sql,Sql Server,在本例中,我只想返回5678,因为对于A列中有5678的行,它在B列中不存在 colu\u a colu\b 1234 1234 1234 5678 5678 3321 5678 3135 不存在带有的: select distinct t.col_a from tablename t where not exists ( select 1 from tablename where col_a = t.col_a and col_b = t.col_a ) 请参

在本例中,我只想返回5678,因为对于A列中有5678的行,它在B列中不存在

colu\u a colu\b
1234    1234
1234    5678
5678    3321
5678    3135
不存在带有的:

select distinct t.col_a from tablename t
where not exists (
  select 1 from tablename
  where col_a = t.col_a and col_b = t.col_a
)
请参阅。
结果:

或者您可以
按列a进行分组
并在HAVING子句中设置条件:

select col_a 
from tablename 
group by col_a
having sum(case when col_a = col_b then 1 else 0 end) = 0

请参见带有
除外:

SELECT DISTINCT col_a FROM tablename
EXCEPT SELECT col_a FROM tablename WHERE col_a = col_b

比forpas使用NOT EXISTS

RJ的方法更简洁,但效率不高,这将返回1234。我想返回5678,因为该值不在列b中,因为在列a中包含5678的两行“HAVING SUM”(case HA.cifinteral=MP.Member\u NBR then 1 else 0 end)=0`您知道这不起作用的原因吗?Microsoft SQL不喜欢case语句中的=。我更新了SQL Server的演示,它们都正常工作。检查它们。您在case语句
中缺少SUM(当HA.cifinteral=MP.Member\u NBR然后1 else 0 end=0时的case)
SELECT DISTINCT col_a FROM tablename
EXCEPT SELECT col_a FROM tablename WHERE col_a = col_b