mysql - 如何获取状态全为 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 的图像的结果计数。
解决方案
您可以使用条件聚合来查找不存在其他状态的组:
SELECT psqno
FROM t
GROUP BY psqno
HAVING COUNT(CASE WHEN status = 1 THEN 1 END) = COUNT(*) -- all rows have status = 1
推荐阅读
- python - python-click:格式化帮助文本
- c# - 如何在 MVC Core 中使用缓存管理器?
- android - React Native 图像阴影未显示在视图中
- python-3.x - 将一个字段与包含逗号分隔的 4 个值的 csv 文件的另一个字段进行比较
- android - 找不到类“com.google.android.material.button.MaterialButton”
- python - 根据元组列表中的第二个元素查找具有前 5 个唯一值的所有项目
- nginx - 如何使用 Nginx 访问 control.unit.sock 以安全地代理 Unit API
- r - 如何从函数外部将 lm 对象中的权重作为变量传递,并将列名作为模型表单中的权重引用?
- python - 在 Python 中找到一个元素的总和
- database - 如何获取 Firebase 集合中的所有文档(包括不存在的祖先文档)?