我有一个脚本来计算简单成就类型脚本中的用户点,然后按顺序在网页上显示它们。我有以下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
我如何制作上述代码包括尚未获得积分的用户?这是一个复杂的变化吗?
答案 0 :(得分:1)
使用left outer join
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
答案 1 :(得分:0)
使用左连接
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 as u left join awarded_points pa
ON u.userid = pa.userid
GROUP BY u.userid
ORDER BY points DESC
LIMIT 10