MySQL의 여러 열을 기반으로 순위 결정
쿼리:
행을 기반으로 순위를 지정하려면 game_detail_sum의 내림차순을 고려하면서 여러 열(user_id 및 game_id)에 대해 하위 쿼리와 조건부 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!