mysql - MySQL:获取每个用户的状态(待定和已批准)计数
问题描述
我正在做一个项目,但我被困在一个点上。问题是我有以下两个表,users
并且user_mistakes
:
users
:
ID | 姓名 |
---|---|
1 | 美国广播公司 |
2 | XYZ |
3 | JKL |
user_mistakes
:
ID | 用户身份 | 错误 | 地位 |
---|---|---|---|
1 | 1 | Lorem ipsum | 1 |
2 | 1 | Lorem ipsum | 1 |
3 | 2 | Lorem ipsum | 0 |
4 | 2 | Lorem ipsum | 1 |
如果user_mistakes.status = 0
=待定
如果user_mistakes.status = 1
=批准
根据上面users
和user_mistakes
表格数据,我希望每个用户的待处理和已批准状态计数如下:
用户身份 | 姓名 | 未决错误 | 批准的错误 |
---|---|---|---|
1 | 美国广播公司 | 0 | 2 |
2 | XYZ | 1 | 1 |
3 | JKL | 0 | 0 |
有什么方法可以通过单个查询来实现吗?
解决方案
您可以尝试使用以下代码:
SELECT
users.id,users.name,
SUM(IF(mistakes.status=1, 1, 0)) AS approved_mistakes,
SUM(IF(mistakes.status=0, 1, 0)) AS pending_mistakes
FROM users
LEFT JOIN mistakes ON mistakes.user_id = users.id
GROUP BY mistakes.user_id
如果您遇到任何问题,请告诉我
推荐阅读
- typescript - 使用所有默认属性值初始化 Typescript 接口临时对象
- php - .php 文件的 503 服务不可用错误
- shell - 如何使用 Shell 脚本放置数据透视表
- python - 如何打印函数参数?
- c++ - 关于字符串的一些问题
- npm - 使用来自 Webpack npm dev 脚本的 Vue 开发版本
- postgresql - 转储 postgresql 数据库源一的编码为“C.UTF-8”,目标一的编码为“en_US.UTF-8”
- android - 为什么离开主片段后建议隐藏底部导航栏?
- c# - Jwt Bearer 和依赖注入
- matlab - 扩展卡尔曼滤波器预测更新时间