我有一个表格结构
colA | colB
--------------
1 | A
1 | B
1 | C
2 | X
2 | B
2 | C
3 | Y
3 | B
3 | X
如何使用条件获得
?我尝试使用这个cola return=2
,其中colB是X,B,cselect colA FROM table WHERE colB IN('x','b','c')
,但结果是1,1,2,2,2,3,3
考虑使用聚合:
select a
from mytable
group by a
having
sum(b = 'B') >= 1
and sum(b = 'C') >= 1
and sum(b = 'X') >= 1
这将给出至少每存在一条记录的a列值,其中b列的值为“b”,一条为“C”,一条为“X”。
您可以对此进行更严格的限制,比方说,如果您不希望b中有除'a'、'b'、'x'以外的其他可能值:
select a
from mytable
group by a
having
sum(b = 'B') = 1
and sum(b = 'C') = 1
and sum(b = 'X') = 1
and count(*) = 3