0
私は、最も人気のある曲の最大得点を曲の人気順に取得しようとしています。ORDER BY FIELDの値のMySQLサブクエリ
私は、次のフィールドで、 "ゲームプレイ" と呼ばれるテーブルがあります:
これまで得点song_id
- IDを、私が得た最も近いものはこれです:
SELECT id, song_id, score FROM ( SELECT id, song_id, score FROM ( SELECT id, song_id, score FROM gameplay ORDER BY score DESC ) AS all_scores_in_order GROUP BY song_id ) AS top_scores_per_song ORDER BY FIELD (song_id, 3,1,2)
しかし、
ORDER BY FIELD
の値は別のサブクエリによって生成されることを願っています。つまり、人気度によってランク付けされたsong_id(テーブル内の行の出現数をカウントする順番)です。SELECT song_id FROM gameplay GROUP BY song_id ORDER BY count(id) DESC
私は明確にこれを考えていましたが、SELECT MAX(スコア)はテーブル全体の最大値のみを選択するのではなく、各グループから最大スコアを選択することを認識しませんでした。ありがとうCylindric :) –
ああ、私は単純な1つのライナーGROUPまたは私が逃したいくつかトリッキーなOVER句に置き換えられて終わったいくつかの美しい巨大なクエリを構築しました:) – Cylindric