2012-01-09 4 views
2

userIDscoreを含むMySQLテーブルがあります。
1人のユーザーが多数のスコアを持つことができますが、もちろん多くのユーザーがいる可能性があります。SQL - 各ユーザーのトップ値を取得する(DISTINCT?)

データベース内のuserIDの各に対して最高のスコアを取得します。私は次のことを試してみたが、私は間違った方法にいるように私は感じ

SELECT DISTINCT(`userID`), `score` FROM `myTable` ORDER BY `score` DESC 

どのような援助を大幅に理解されるであろう。

ありがとうございます。
Shai。

答えて

6

あなたはgroup by句で集計機能maxたい:

select 
    userid, 
    max(score) as maxscore 
from 
    mytable 
group by userid 
order by maxscore desc 

group byは "ねえ、MySQLは、私の最大scoreを得るが、useridことによってそれを分割する。"、と言いますこの方法で、各useridの最大得点を得ます。

さらに、エイリアス化された列を使用すると、最大スコア、降順(リーダーボードまたはあなたのもの)のユーザーリストを取得できます。

+0

最大(スコア)がありませんでした。ありがとうございました! –

+0

@ShaiMishali - そして 'group by' :) – Eric

+0

@ShaiMishali - こちらもご覧ください:http://dev.mysql.com/doc/refman/5.0/ja/group-by-functions.html – Eric

関連する問題