2017-04-21 75 views
0

我正在使用以下查询来生成排行榜,但由于某种原因它将分数返回为值的两倍。MYSQL sum()返回双分数

SELECT p.user_id, u.first, SUM(points) AS score FROM points AS p LEFT 
JOIN users AS u ON p.user_id = u.fb_id WHERE p.action_time > 
'1492732800' GROUP BY p.user_id ORDER BY points DESC LIMIT 10 

什么可能导致这种情况发生?

感谢

+0

你能还提供了一些样本数据,以便我们能够重现该问题? –

+0

您可能在一个表或另一个表上有多个用户标识的记录。 – Kickstart

回答

1

一个解决办法是在一个单独的子查询聚集点,并加入到:

SELECT t1.fb_id, t1.first, t2.score 
FROM users t1 
INNER JOIN 
(
    SELECT user_id, SUM(points) AS score 
    FROM points 
    WHERE action_time > '1492732800' 
    GROUP BY user_id 
) t2 
    ON t2.user_id = t1.fb_id