我编写了以下加入查询,以使用汇总函数获取报告
SELECT users.id, SUM(orders.totalCost) AS bought, COUNT(comment.id) AS commentsCount, COUNT(topics.id) AS topicsCount, COUNT(users_login.id) AS loginCount, COUNT(users_download.id) AS downloadsCount
FROM users
LEFT JOIN orders ON users.id=orders.userID AND orders.payStatus=1
LEFT JOIN comment ON users.id=comment.userID
LEFT JOIN topics ON users.id=topics.userID
LEFT JOIN users_login ON users.id=users_login.userID
LEFT JOIN users_download ON users.id=users_download.userID
GROUP BY users.id
ORDER BY bought DESC
但我不知道为什么我得到以下输出?
聚合函数的结果相互成倍!!!
我不知道为什么?
例如,对于最后一行我期望得到以下结果
821 | 48000 | 63 | 0 | 10 | 10
执行EXPLAIN查询的结果如下所示
答案 0 :(得分:2)
这种类型的结果的一个原因是你正在使用与用户表的左连接,结果集可能包含每个用户的重复行,所以你得到的数量超过预期的数量,你可以使用{ {1}}在count中只计算每个用户的唯一关联,并且对于DISTINCT
的总和,您可以使用子选择为每个用户提供一个总和,而不必为用户的订单重复值
totalCost