首页 > 解决方案 > 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=批准

根据上面usersuser_mistakes表格数据,我希望每个用户的待处理和已批准状态计数如下:

用户身份 姓名 未决错误 批准的错误
1 美国广播公司 0 2
2 XYZ 1 1
3 JKL 0 0

有什么方法可以通过单个查询来实现吗?

标签: mysql

解决方案


您可以尝试使用以下代码:

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

如果您遇到任何问题,请告诉我


推荐阅读