我有以下MSSQL表:
Col1 Col2
A x
A y
A z
B x
B y
C x
C z
我想要Col1中的所有值,使得它们没有与Col2的特定值关联的记录
例如,我想从Col1获得价值,以便' z'该值不会发生。答案应该是B
答案 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