问题描述
来自具有 2 列 ID 和 Flag 的表
ID Flag
111 2
222 2
333 2
444 2
333 5
111 5
我想选择所有有 2 个标志但没有 5 个标志的 id
预期答案
222
444
我在下面试过,但不行。
SELECT * from table
where flag in ('2')
and flag not in ('5')
解决方法
SELECT id
FROM source
GROUP BY id
HAVING SUM(flag=2)
AND !SUM(flag=5)