でMySQLは、私は、ユーザーが1つの試合に勝ったとmatch_idを含んでいるほとんどのポイントを引き戻すMYSQLスクリプトを書きたい...私はこのようになりますテーブルを持っている詳細
user_id, match_id, points_won
1 14 10
1 8 12
1 12 80
2 8 10
3 14 20
3 2 25
をグループ化します結果で - 言い換えれば...私は私は何ができるmatch_idを必要としなかった場合はもちろん
user_id, match_id, max_points_won
1 12 80
2 8 10
3 2 25
...
select user_id, max(points_won)
from table
group by user_id
しかし、 "select"と "group by"にmatch_idを追加すると、すべてのマッチの行があり、 "select"(そして "group by"ではない)にmatch_idを追加すると、 points_wonに正しく関係しません。
(ユーザーが複数の一致上の点の同じ量を獲得した場合など)には特に安全に感じることはありませんので、理想的には、私は以下のいずれかを行うにはしたくない...
SELECT t.user_id, max(t.points_won) max_points_won
, (select t2.match_id
from table t2
where t2.user_id = t.user_id
and t2.points_won = max_points_won) as 'match_of_points_maximum'
FROM table t
GROUP BY t.user_id
ていますこの問題のためのよりエレガントなオプションがありますか?派生テーブルとして
select user_id, max(points_won)
from table
group by user_id
:
ありがとうゴードン - 実際に私が望んでいたものです! – d3wannabe