select 行与其他行有依赖关系

select rows that having dependencies to other rows

我有一个 table 的数据为:

C1    || C2  
-----------------
1     || a   
1     || b   
1     || c   
2     || a   
2     || b  
2     || c   
3     || a   
3     || b   
4     || c   
4     || d   
5     || c   
6     || a  

我必须 select 所有具有 C2 bc 且没有值的 C1 个人号码。建议 ?

只喜欢 -> C1 = 4 和 5

您可以使用 having 子句来计算其他值。如果计数为 0,则您需要 c1 值:

select c1
from table t
group by c1
having sum(case when c2 in ('b', 'c') then 1 else 0 end) = 0

此答案使用与 Gordon Lindoff 的答案类似的技术。

您可以像这样将 GROUP BYhaving 一起使用。

select c1
from table t
group by c1
having sum(case when c2 in ('b', 'c') then 1 else 0 end) > 0 
and sum(case when c2 = 'a' then 1 else 0 end) = 0