我有一个脚本可以在简单的成就类型脚本中计算用户积分,然后按顺序将它们显示在网页上。我有以下 mySQL 函数,但如果用户还没有任何点(即没有找到“pa.userid”,则根本不会获取用户)
SELECT u.userid,
SUM(IF(pa.plus = '1', pa.points_amount, 0)) - SUM(IF(pa.plus = '0', pa.points_amount, 0)) AS points
FROM awarded_points pa,
users u WHERE u.userid = pa.userid
GROUP BY u.userid
ORDER BY points DESC
LIMIT 10
我如何使上述代码包含尚未获得任何积分的用户?这是一个复杂的改变吗?
最佳答案
使用左外连接
SELECT u.userid,
SUM(IF(pa.plus = '1', pa.points_amount, 0)) - SUM(IF(pa.plus = '0', pa.points_amount, 0)) AS points
FROM users u
LEFT OUTER JOIN awarded_points pa ON u.userid = pa.userid
GROUP BY u.userid
ORDER BY points DESC
LIMIT 10
关于mysql - 无论用户是否存在,表字段的 SUM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11471501/