2012-11-11 2 views
0

저는 MySQL을 사용하고 있으며 플레이어 점수가있는 테이블을 가지고 있으며, 단일 플레이어는 여러 점수를 기록 할 수 있습니다. MySQL ORDER BY 키워드를 사용하여 플레이어의 순위를 매기는 가장 좋은 방법을 찾고 있습니다.MySQL이 쿼리하는 테이블의 순서를 유지합니까?

은 지금 내가 뭘하는지입니다 :

SELECT DISTINCT t.userName FROM (SELECT userName, score FROM scoreTable ORDER BY score DESC) t; 

내가 서브 쿼리의 주문이 메인 쿼리에 의해 유지되고 있으리라 믿고있어 그 순위에 대해이 작업을 사용합니다.

이 가정이 맞습니까? 지금까지의 모든 테스트는 주문을 올바르게 유지합니다. 작동하지 않는 상황이 있습니까?

+0

아무 문제가 없을 것 같습니다. 한가지 더 "select DISTINCT (userName) FROM scoreTable ORDER BY score DESC"를 사용하면 문제가 없습니다 .. 위의 하위 쿼리를 사용하는 이유 –

+0

제안 된 쿼리를 사용하면 첫 번째 인스턴스가 각 userName을 사용하고 해당 점수를 사용하여 정렬 된 순위를 지정합니다. – Russbear

답변

1

나는 이것이 보장 된 행동이라고 생각하지 않지만 일반적으로 그렇습니다. 최종 결과가 그런 식으로 정렬되기를 원하면 외부 쿼리에 ORDER BY을 추가하는 것이 좋습니다.

2

아래 내용이 유용할까요?

SELECT userName, MAX(score) AS max_score 
FROM scoreTable GROUP BY username 
ORDER BY max_score DESC 
관련 문제