2010-12-15 5 views
12

를 정렬 나는이 다음 표 :mysql을 그룹별로 각 그룹에게

ID NAME TIME 
1 A 0 
2 A 3 
3 B 1

생산하는 아래 내가 쿼리를 사용하고 있습니다 :

SELECT * FROM `table` GROUP BY `NAME` 
ID NAME TIME 
1 A 0 
3 B 1

을 그리고 난을 생성하는 GROUP BY를 사용하려면 결과 (TIME 열에 따른 할인 정렬) :

+1

으로 귀하의 질문을 읽고, 당신이 원하는 방법을 조금 불분명하다 필드를 정렬 할 수 있습니다. – Starx

+0

정확히 어떤 결과를 얻으려고하는지 분명하지 않습니다. 아마 당신이 실제로하고 싶은 것을 명료하게 발음 해보십시오. – Josh

+0

하지만 "주문 방식"이 자연스럽게 이루어지기를 원하면 어떻게해야합니까? –

답변

15
SELECT NAME, MAX(TIME) as TIME 
FROM table 
GROUP BY time 
ORDER BY time DESC 
+0

이것은 실제로 나를 위해 일했습니다. 하위 쿼리 기반 솔루션보다 정보가 덜 필요하지만 더 빠릅니다. –

+3

'NAME' 칼럼이'MAX (TIME)'과 같은 줄에 있다는 보장은 없습니다. 위의 데이터 또는 작은 데이터 세트를 감안할 때 제대로 작동하지만 신뢰할만한 것은 아닙니다. 자세한 내용은 http://stackoverflow.com/questions/14770671/mysql-order-by-before-group-by?noredirect=1#comment63515985_14770671 –

+0

을 참조하십시오. 'ORDER BY' 절만이'SELECT' 절의 별칭을 받아 들일 수 있습니다. – JasonMing

0

글쎄, 당신은 그룹 다음에 ID와 시간 필드에서보고 싶은 것을 결정해야합니다. 예를 들어 MAX (ID)와 SUM (시간)을 선택한 다음 totaltime desc로 정렬합니다.

희망 사항.

6
select * from (select * from table order by TIME DESC) t group by NAME