我有一个类似下面的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个人完全启用,因此也应该排除。
答案 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;