我有两张 table ,
- 用户
- 举报用户
在用户表中有以下列,
userid , email , phone_number
在报告用户表中有以下列,
id , userid , report_user_id , reason
因此,我想获取具有报告计数的用户列表,如果计数为零,则它必须为零。
用户表,
userid | email | phone_number
1 | abc@gmail.com | 12312312
2 | abcd@gmail.com | 112312312
3 | abc3@gmail.com | 112312312
报告用户表,
id |userid | report_user_id | phone_number
1 | 2 | 3 | 12312312
2 | 3 | 2 | 112312312
3 | 1 | 2 | 112312312
预期输出,
userid | email | phone_number | report_count
1 | abc@gmail.com | 12312312 | 0
2 | abcd@gmail.com | 112312312 | 2
3 | abc3@gmail.com | 112312312 | 1
此处 userid = 1 的报告计数为零,因此它必须为零(因为在 report_user_id 列中没有 1 的条目),userid = 2 有 2 个报告计数,因此它必须为 2 ,而 userid = 3 有 1 个报告计数所以它一定为零。
我已经尝试过这个查询,但无法获得预期的结果,
SELECT count(LRU.report_user_id) as report_count FROM `lickr_report_user` as LRU LEFT JOIN lickr_users as LU ON LU.userid = LRU.report_user_id GROUP BY LU.userid
最佳答案
我认为您颠倒了连接语句中的用户和报告表:
您还应该在 COUNT
函数中添加一个 IFNULL
将 0 替换为 null。
SELECT LU.userid,
LU.email,
LU.phone_number,
COUNT(IFNULL(LRU.report_user_id),0) as report_count
FROM lickr_users as LU
LEFT JOIN `lickr_report_user` as LRU ON LU.userid = LRU.report_user_id
GROUP BY LU.userid, LU.email, LU.phone_number
关于mysql - MYSQL中的Join(从一张表开始计数,从一张表开始列出),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52112274/