다소 다뤘지만 내 상황에는 도움이되지 않았지만 순위에는 불일치가있었습니다. 누구라도 도움이 될지 궁금합니다!MySQL 순위, 제대로 작동하지 않음
그래서 내가 게임을 가지고, 데이터베이스 테이블은 다음과 같습니다 사용자,지도, 별명,
임은 쉽게 점수를 발주 정보를 얻을 수 리더 보드를 개발하고 user_game_scores. 환상적.
하지만 특정 사용자 점수와 순위가 모든 점수와 관련 될 수 있도록 순위를 지정하고 싶습니다. 예 :
GLOBAL 점수
user info - Score - (rank)1
user info - Score - (rank)2
user info - Score - (rank)3
etc.
사용자 점수가 될 가능성이 더 높습니다 반면 : 당신으로
SELECT users.first_name, users.surname, player_nicknames.nickname, maps.map_name, user_game_scores.score,
FIND_IN_SET(score, (SELECT GROUP_CONCAT(score ORDER BY score DESC) FROM user_game_scores)) AS rank
FROM `user_game_scores`
INNER JOIN users ON user_game_scores.user_id = users.user_id
INNER JOIN maps ON user_game_scores.map_id = maps.map_id
INNER JOIN player_nicknames ON user_game_scores.user_id = player_nicknames.user_id
WHERE user_game_scores.deleted is null
AND users.deleted is null
AND player_nicknames.deleted is null
ORDER BY user_game_scores.score DESC
user info - Score - (rank)82
user info - Score - (rank)94
user info - Score - (rank)115
etc.
내가이 될 구현을 상상 순위가 2 ~ 23의 숫자를 그리는 경향이 있음을 알 수 있습니다. 나는 계급 24와 같은 것을 그룹화하고 (나는 그 경우에 일어나는 것을 선호한다) 계속 하겠지만, 계급 중 일부가 빠져서 왜이 기능을 처리하기를 원하지 않는지 이해하지 못한다.
죄송합니다. 오래되었지만 최대한 많은 정보를 제공해 주신 것으로 알고 있습니다. 미리 감사드립니다!
질문을 수정하고 샘플 데이터와 원하는 결과를 제공하십시오. –
아마도'SELECT GROUP_CONCAT' 하위 쿼리가 "deleted"('deleted is null') 항목을 필터링하지 않았기 때문일 것입니다. –
당신은 훌륭합니다. 실제로 다른 레코드가 삭제되었지만이 테이블에서 항목을 지우지 않았습니다. 감사합니다. – TheMellor