如何获得状态全为1的记录数

时间:2019-04-29 11:47:54

标签: mysql sql aggregate-functions

我要将人的图像保存在一张桌子中,一个人将有多张图像,每张图像的状态为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的图像的结果计数。

1 个答案:

答案 0 :(得分:0)

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

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

Demo on db<>fiddle