ホームページ >データベース >mysql チュートリアル >複数の列に基づいて MySQL の行をランク付けするにはどうすればよいですか?
MySQL の複数の列に基づいてランクを決定する
クエリ:
ベースで行をランク付けするには複数の列 (user_id と game_id) の降順を考慮しながらgame_detail_sum では、サブクエリと条件 CASE 式を使用できます。
SET @r := 0, @u := 0; SELECT @r := CASE WHEN @u = dt.user_id THEN @r + 1 WHEN @u := dt.user_id /* Notice := instead of = */ THEN 1 END AS user_game_rank, dt.user_id, dt.game_detail, dt.game_id FROM ( SELECT user_id, game_id, game_detail FROM game_logs ORDER BY user_id, game_detail DESC ) AS dt
説明:
MySQL 8 Row_Number() 関数によるクエリの改善:
MySQL 8.0 では、 Row_Number() 関数。より効率的な行を可能にします。番号付け:
SELECT user_id, game_id, game_detail, ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY game_detail DESC) AS user_game_rank FROM game_logs ORDER BY user_id, user_game_rank;
補足:
以上が複数の列に基づいて MySQL の行をランク付けするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。