Menentukan Kedudukan Berdasarkan Berbilang Lajur dalam MySQL
Pertanyaan:
Untuk menyusun baris berdasarkan pada berbilang lajur (user_id dan game_id) sambil mempertimbangkan susunan menurun game_detail_sum, anda boleh gunakan subkueri dan ungkapan CASE bersyarat:
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
Penjelasan:
Pertanyaan yang Diperbaiki dengan Fungsi MySQL 8 Row_Number():
MySQL 8.0 memperkenalkan Row_Number() fungsi, yang membolehkan baris yang lebih cekap penomboran:
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;
Nota Tambahan:
Atas ialah kandungan terperinci Bagaimana untuk Kedudukan Baris dalam MySQL Berdasarkan Berbilang Lajur?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!