我试着在两张桌子上数数,我看不出我的查询有什么问题,但我得到了一个错误的结果。用户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/

10-16 06:44