Heey all,我正在努力解决一些非常简单的问题,但我无法找到正确的查询。
我有这张桌子
id | col_a | col_b
-----------------
1 | 1 | value_a
2 | 1 | value_b
3 | 1 | value_c
4 | 2 | value_a
5 | 2 | value_b
6 | 3 | value_a
7 | 3 | value_b
我想要的是来自col_a的所有不同值,其中col_a不是some_id的记录都没有" value_c"在col_b
所以在这种情况下我想得到以下结果集
col_a
-----
2
3
因为col_b有一个" value_c"其中col_a = 1(记录id:3)
所以基本上我对col_a的id不感兴趣,如果任何带有该id的记录包含" value_c"在col_b
我希望很清楚
已提前感谢!!
答案 0 :(得分:0)
"教科书解决方案"可能是使用not exists
运算符:
SELECT DISTINCT col_a
FROM mytable a
WHERE NOT EXISTS (SELECT *
FROM mytable b
WHERE a.col_a = b.col_a AND col_b = 'value_c')
但我认为对value_c
个实例进行分组和计数会更优雅:
SELECT col_a
FROM mytbale
GROUP BY col_a
HAVING COUNT(CASE col_b WHEN 'value_c' THEN 1 END) = 0