2010-04-06 6 views
1

이름, 득표 수 및 순위 (기본적으로)가 3 개인 테이블이 있습니다. 나는 투표로 표를 주문한 다음이 순서를 반영하여 '순위'를 업데이트하여 가장 많은 표를 얻은 순위가 1로 설정되고 두 번째로 많은 표가 2로 설정되도록합니다.MySQL 테이블에서 숫자 순서 인덱스 만들기

이 작업을 수행 할 수 있습니다. PHP에서하지만 그것은 꽤 낭비적인 것 같습니다 - PHP의 모든 레코드를 수동으로 처리 할 필요없이 하나의 SQL 쿼리로이 작업을 수행 할 수있는 방법이 있습니까?

+1

이 열에 무엇이 필요합니까? 다른 열을 유지하는 대신 항상'votes' 열을 기준으로 정렬하는 것이 더 쉬울까요? –

+0

나는 순위를 보여주고 싶지만 실제 득표를 공개하지는 않습니다. – DCD

답변

2

동점도에 상관하지 않는다고 가정하면 쿼리를 저장하는 대신 동적으로 순위를 계산할 수 있습니다. @johnfx는 당신에게 정확한 답을 준 있지만

SET @rank=0; 

SELECT @rank:[email protected]+1 AS rank, name, votes 
FROM yourTable 
ORDER BY votes DESC;