给出一个包含字段A和B的表:
| A | B |
---------
| 1 | p |
| 1 | f |
| 1 | t |
| 2 | p |
| 2 | f |
我正在尝试构建一个查询,找到所有A的某个地方也没有't'。
因此,对于此数据,输出应该是
| A |
-----
| 2 |
因为2没有在字段B中的任何地方列出't'
我尝试了SELECT DISTINCT A FROM table WHERE B!='t'
,但该逻辑存在缺陷,因为1还包含B!='t'
行。我也尝试了GROUP BY
的各种变体,但我被卡住了。
请帮忙
答案 0 :(得分:5)
我会使用group by
和having
:
select a
from t
group by a
having sum(b = 't') = 0;
答案 1 :(得分:4)
试试这个:
SELECT A
FROM mytable
GROUP BY A
HAVING SUM(B = 't') = 0
HAVING
子句过滤掉包含至少一条A
条记录的B = 't'
组。
答案 2 :(得分:0)
使用GROUP BY和HAVING子句:
SELECT A
FROM
GROUP BY A
HAVING SUM(B = 't') = 0;