2012-08-26 2 views
0

아직하여 그룹을 계산 반환 :MySQL은 : 나는 필드와 테이블이 모든 결과

id | color | other fields.... 

1 red 
2 blue 
3 green 
4 green 
5 red 
6 blue 

색상 열거입니다 (빨강, 파랑, 녹색).

내가 원하는 것은 색상별로 정렬 된 결과 목록이며 빨강/파랑/녹색 색상의 요소 개수를 알고 싶습니다. RED = 2, BLUE 등

1 빨간색 5 빨간색 2 블루 6 파란색 3 녹색 4 녹색

과 원하는 개수 :

그래서 위의 표에서, 내가 좋아하는 정보를 원하는 = 2, GREEN = 2

GROUP BY 색상을 사용하면 3 행만 남습니다.

외부 루프를 별도로 계산하거나 2 가지 다른 쿼리를 사용할 수 있습니다. 하지만 단일 쿼리에서이 작업을 최적으로 수행 할 수있는 방법이 있으면 감사하겠습니다.

+0

적어도 하나 이상의 항목이있는 대신 모든 enum-values에 대한 개수를 원하십니까? – TheHe

답변

1
SELECT c.*, ColorCounts.ColorCount 
FROM colors AS c 
INNER JOIN (
      SELECT color, COUNT(*) AS ColorCount 
      FROM colors 
      GROUP BY color 
      ) AS ColorCounts 
     ON ColorCounts.color = c.color 
ORDER BY c.color, c.id