无论用户是否存在,表格字段的总和

时间:2012-07-13 13:30:11

标签: mysql sum

我有一个脚本来计算简单成就类型脚本中的用户点,然后按顺序在网页上显示它们。我有以下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

我如何制作上述代码包括尚未获得积分的用户?这是一个复杂的变化吗?

2 个答案:

答案 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

查看great explanation of joins

答案 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