根據MySQL 中的多個欄位決定排名
查詢:
查詢: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
根據行排名在多個列(user_id 和game_id)上,同時考慮降序排列game_detail_sum,可以使用子查詢和條件 CASE 表達式:
子按 game_detail_的降序對每個行進行排序user_id.外部查詢使用使用者定義的變數@r (行排名)和@u(前一個 user_id)來指派行號。
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 8 Row_Number() 函數來改進查詢:
以上是如何根據多列對 MySQL 中的行進行排名?的詳細內容。更多資訊請關注PHP中文網其他相關文章!