查询返回(分组)行,其中不存在具有column = condition的行

时间:2013-01-11 18:00:55

标签: mysql

假设我有一个包含两列的表,一个client_id和一个布尔值。

给定的client_id有多个数据条目,每个条目可能有也可能没有布尔值设置为true。

我需要一个只返回没有ROWS且布尔值设置为true的client_ids的查询,我需要按client_id分组。

我确信这很简单,它现在就让我失望了。

1 个答案:

答案 0 :(得分:1)

使用HAVING子句过滤组:

SELECT client_id FROM my_table GROUP BY client_id HAVING SUM(boolean) = 0

请注意SUM(boolean)在MySQL中有效,因为它没有真正的布尔类型;在其他RDBMS中,你要么必须使用不同的聚合函数,要么测试布尔值并返回可以在SUM()中使用的结果:

... HAVING SUM(CASE WHEN boolean THEN 1 END) = 0