Heim >Datenbank >MySQL-Tutorial >Wie ordne ich Zeilen in MySQL basierend auf mehreren Spalten?
Rang basierend auf mehreren Spalten in MySQL bestimmen
Abfrage:
Rang basierend auf Zeilen Für mehrere Spalten (user_id und game_id) können Sie unter Berücksichtigung der absteigenden Reihenfolge von game_detail_sum eine Unterabfrage und verwenden Bedingte CASE-Ausdrücke:
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
Erklärung:
Verbesserte Abfrage mit MySQL 8 Row_Number()-Funktion:
MySQL 8.0 führt die Row_Number()-Funktion ein, die eine effizientere Zeilennummerierung ermöglicht:
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;
Zusätzlich Hinweise:
Das obige ist der detaillierte Inhalt vonWie ordne ich Zeilen in MySQL basierend auf mehreren Spalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!