반응형
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
반응형
'sourcecode' 카테고리의 다른 글
3진 연산자에 사용하는 코딩 스타일은 무엇입니까? (0) | 2022.11.27 |
---|---|
2개의 오브젝트 간의 일반적인 딥 디프 (0) | 2022.11.27 |
git의 bash 스크립트에 mariadb 자격 증명을 저장하지 않는 방법 (0) | 2022.11.27 |
MariaDB에서 CONCAT()와 WHERE를 결합하는 방법 (0) | 2022.11.27 |
vuejs에서 http referre를 얻는 방법 (0) | 2022.11.27 |