sourcecode

mysql 데이터베이스에 순위 저장

copyscript 2022. 11. 27. 21:23
반응형

mysql 데이터베이스에 순위 저장

현재 데이터베이스에 포지션 랭크를 저장하려고 합니다.

좋아하는 노래 순위를 매겨서 저장해야 돼요.현재는 다음과 같이 저장할 수 있습니다.

SET @r=0;
UPDATE song_board_t SET song_ranking= @r:= (@r+1) ORDER BY song_likes DESC; 

이것은 제가 매일 임시 테이블에서 실행하고 다른 테이블로 복사하는 것입니다.

제가 직면한 문제는 song_likes가 동일할 경우 song_ranking이 동일해야 한다는 것입니다.예를 들어 두 곡이 각각 100개의 좋아요를 갖는 경우 둘 다 같은 랭킹을 가져야 합니다.

현재는 행 전체를 카운트하기 때문에 각 순위가 이전보다 1개 더 많습니다.

sql이 아닌 PHP로 해야 하는 경우도 있습니다.

어떤 도움이라도 주시면 감사하겠습니다.

미리 확인하다

EN

이 작업은 다음 쿼리를 사용하여 수행할 수 있습니다.

UPDATE song_board_t s
INNER JOIN (
    SELECT
    song, /*or whatever the primary key is*/
    @r := IF(@prev = song_likes, @r, @r + 1) as ranking,
    @prev := song_likes
    FROM
    song_board_t
    , (SELECT @r := 0, @prev := null) var_init_subquery
    ORDER BY song_likes DESC
) sq ON s.song = sq.song
SET s.song_ranking = sq.ranking;

언급URL : https://stackoverflow.com/questions/25992683/storing-a-rank-in-mysql-database

반응형