选择包含给定数据集的不同行

Kla*_*ark 1 sql t-sql sql-server

我有一张桌子:

bid | data
1   | a
1   | b
1   | c
2   | a
3   | c
3   | a
Run Code Online (Sandbox Code Playgroud)

我想选择包含给定数据集的所有出价.

例如,"包含"数据"a"和"b"(结果应为出价1)的所有出价,或包含"a"和"c"(1和3)的出价.

只有我能想到的解决方案有点讨厌,所以我很感激一些帮助/建议.

我的第一次尝试:

select bid from my_table as t1 where 
exists (select * from my_table t2 where 
    t2.bid = t1.bid and 
    t2.data='a'
)
and
exists (select * from my_table t2 where 
    t2.bid = t1.bid and 
    t2.data='b'
)
group by bid;
Run Code Online (Sandbox Code Playgroud)

谢谢.

Chr*_*cht 5

select t1.bid
from table_1 t1
inner join table_1 t2 on t1.bid = t2.bid
where t1.data = 'a' and t2.data = 'c'
Run Code Online (Sandbox Code Playgroud)

顺便说说:

所有"包含"数据"a"和"b"的出价(结果应为出价1)

- > bid 2还包含数据'a'和'b'