首页 > 解决方案 > 如何获取状态全为 1 的记录数

问题描述

我将人物图像保存在一张表中,一个人将有多个图像,每个图像的状态为1或0,我们需要根据图像状态获取记录。如果一个人记录的图像状态全为 1,那么我们需要考虑该记录如果任何一个状态为 0,那么我们需要从结果中跳过该记录

Original Result

id psqno status
1   1     1
2   1     1
3   1     0
4   2     1
5   2     1
6   3     1
7   3     0
8   4     1
9   4     1


Expected Result

id psqno status
1    2     1
2    4     1

我已经尝试过如下查询:

select count(distinct psqno) as image_record from users where status = 1

我想获得所有状态为 1 的图像的结果计数。

标签: mysqlsqlaggregate-functions

解决方案


您可以使用条件聚合来查找不存在其他状态的组:

SELECT psqno
FROM t
GROUP BY psqno
HAVING COUNT(CASE WHEN status = 1 THEN 1 END) = COUNT(*) -- all rows have status = 1

db<>fiddle 上的演示


推荐阅读