2010-12-07 2 views
4

나는 다음과 같은 테이블에서 상위 10 개의 가장 중복 행 가져 오기하려면 :상위 10 개의 가장 큰 행을 나열하는 방법은 무엇입니까?

Table Name: votes(id,vote) 
-------------------------- 
1 | Taylor Swift 
2 | Maroon5 
3 | Maroon5 
4 | Maroon5 
5 | Taylor Swift 
6 | Kanye West 

출력이되어야한다 뭔가 같은 :

1. Maroon5: 3 votes 
2. Taylor Swift: 2 votes 
3. Kanye West: 1 votes 

수행하는 방법이 MySQL의 전용 (가능한 경우)를 사용하여

당신에게

답변

8
select vote, count(*) 
from votes 
group by 1 
order by 2 desc 
limit 10 
감사
+0

'*'로 계산하는 이유 투표 열만 계산하면됩니다 – RobertPitt

+2

@RobertPitt : 그는 투표 열의 값 수를 세지 않고 투표 열의 값이 같은 행 수를 계산합니다. –

1
select vote,count(vote) from votes group by vote order by count(vote) desc limit 10 
+0

왜 모든 열로 계산되며 왜 COUNT x2를 (를) 실행해야합니까? 당신은 그냥 '투표, count (vote) count'다음에 'ORDER BY count'를 할당합니다. – RobertPitt

+0

@Robert - "count'를 두 번 실행하지 않습니다." –

+0

쿼리가 올바른 결과를 출력하지 않습니다 투표 열에 NULL이 있습니다. –

관련 문제