我试图计算两个表,我没有看到我的查询有什么问题,但我得到了错误的结果。 table_two中不存在用户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
结果表明条件缺失,但我已经使用了两个字段 我哪里错了?
另外,我可以总结一下t_中table_two中不存在的所有用户吗? 就像用户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中t为0的所有用户,t1之和的用户ID是错误的。如果不可能,那么我只会做两个查询。
答案 0 :(得分:1)
试试这个:
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
答案 1 :(得分:0)
如果用户在t2中有多行,那么t2中的每一行都会显示t1。 尝试使用(仅)t1.creator_user_id
进行分组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
性能明智的两个不同的查询可能会更好。