SQL group by query只查找已启用的记录

时间:2016-09-15 00:11:13

标签: mysql sql

我有一个类似下面的MySQL表,我想找到完全禁用的人的姓名。

这是我的表:

+----+----------+---------+
| id | name     | enabled |
+----+----------+---------+
|  1 | person 1 |       1 |
|  2 | person 1 |       0 |
|  3 | person 2 |       0 |
|  4 | person 2 |       0 |
|  5 | person 3 |       1 |
|  6 | person 3 |       1 |
+----+----------+---------+

enabled列表示布尔值)

在这种情况下,我只想找到人2,因为两个记录都被禁用。我不想找人1,因为第1行仍然启用了第1个人,而第3个人完全启用,因此也应该排除。

2 个答案:

答案 0 :(得分:4)

您可以使用聚合和having子句执行此操作:

select name
from t
group by name
having max(enabled) = 0;

答案 1 :(得分:0)

SELECT name
  FROM table
 GROUP BY name
HAVING MIN(enabled) = 0 AND COUNT(1) = 1;