我试着在两张桌子上数数,我看不出我的查询有什么问题,但我得到了一个错误的结果。用户2不存在于表2中,所以零是正确的。
SELECT t1.creator_user_id, COUNT(t1.creator_user_id), COUNT(t2.user_id)
FROM table_one AS t1
LEFT JOIN table_two AS t2 ON t2.user_id = t1.creator_user_id
GROUP BY t1.creator_user_id, t2.user_id
实际结果
1 192 192
2 9 0
预期结果
1 16 12
2 9 0
结果显示缺少group by条件,但我已经使用了这两个字段。
我错在哪里?
此外,我可以总结T1L2中不存在的所有用户是否为T1?
如用户3在T1中存在21次,则结果将是:
1 16 12 (users with > 0 in t2 will need their own row)
2 30 0 (user 2=9 + user 3=21 => 30)
对于t2中0的所有用户,用户Id的和t1都是错误的。如果不可能,我只做两个查询。
最佳答案
试试这个:
SELECT t1.creator_user_id,
Count(*),
(SELECT Count(*)
FROM table_two
WHERE table_two.user_id = t1.creator_user_id)
FROM table_one AS t1
GROUP BY t1.creator_user_id
SQL FIDDLE DEMO
关于mysql - 跨多个表的COUNT个问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12495409/