2017-04-21 6 views
0

次のクエリを使用してリーダーボードを作成していますが、何らかの理由でスコアが値の2倍になっています。二重スコアを返す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

あるテーブルまたは他のテーブルのユーザーIDには、おそらく複数のレコードがあります。 – 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