如何从一列获取记录,以便与另一列中的值无关联

时间:2017-05-19 07:39:03

标签: sql sql-server

我有以下MSSQL表:

Col1 Col2
A     x
A     y
A     z
B     x
B     y
C     x
C     z

我想要Col1中的所有值,使得它们没有与Col2的特定值关联的记录

例如,我想从Col1获得价值,以便' z'该值不会发生。答案应该是B

5 个答案:

答案 0 :(得分:3)

另一种方式:

select Col1 
from your_table
group by Col1
having sum( case when Col2 = 'z' then 1 else 0 end ) = 0

答案 1 :(得分:2)

您可以使用鲜为人知的EXCEPT关键字,如下所示:

SELECT Col1 FROM TableName
EXCEPT
SELECT Col1 FROM TableName WHERE col2 = 'z'

你可以在这里看到 - > http://rextester.com/KPZMB79095

希望这有帮助!!!

答案 2 :(得分:0)

select distinct col1 
     from [table] 
  where col1 not in (
                  select col1 from [table] where col2 = 'z'
                     );

答案 3 :(得分:0)

有很多方法可以做到这一点。对我来说最明显的是使用EXCEPT

SELECT Col1 FROM MyTable
EXCEPT
SELECT Col1 FROM MyTable WHERE Col2 = 'z';

在这里,我们清楚而简单地说我们需要所有Col1值,但具有Col1条目的z值除外。 EXCEPT会自动删除结果。

答案 4 :(得分:0)

试试这个我想你想检索两列中不存在给定值的值:

create table #sample(Col1 char(1), Col2 char(1))
insert into #sample values
('A',     'x'),
('A',     'y'),
('A',     'z'),
('B',     'x'),
('B',     'y'),
('C',     'x'),
('C',     'z')

declare @search char(1) = 'z'

select distinct col1 
from #sample
where col1 not in (
select distinct Col1
from #sample
where (col1 = @search or col2 = @search))

<强>输出:

col1
B