2009-11-09 2 views
1

저는 항상 이와 같은 일을하는 것을 잊어 버립니다.명명 된 열로 그룹화

나는 생년월일이 포함 된 데이터베이스 테이블이 있는데 얼마나 많은 사람들이 같은 나이인지 알고 싶습니다.

나는 시도하고있다 :

SELECT TIMESTAMPDIFF(YEAR, birthdate, CURDATE()) AS age, COUNT(age) 
FROM person 
GROUP BY age 

을하지만 오류가

알 수없는 열 나는에 의해 그룹을 할 수있는 방법 '필드 목록'

을에서 '나이' 명명 된 열?

답변

6

별칭을 사용할 필요가 없으며, 그것은 선택 목록에 다른 열 (예,이 짜증)에서 사용할 수 있습니다.

SELECT TIMESTAMPDIFF(YEAR, birthdate, CURDATE()) AS age, COUNT(TIMESTAMPDIFF(YEAR, birthdate, CURDATE())) 
FROM person 
GROUP BY TIMESTAMPDIFF(YEAR, birthdate, CURDATE()) 
+0

이것은 모든 개발자가 원하는 방식으로 작업하기를 바랄만한 것들 중 하나입니다. 나는 그것이 작동하지 않는 이유를 이해하지 못한다 ... 나는 그것이 진짜 문제를 일으킬 것이라고 상상할 수 없다. ... –

+0

설명을 주셔서 감사합니다. 그렇습니다, MySQL의이 부분은 당신이 생각하는 것처럼 작동하지 않을 때 실망 스럽습니다. –

0

신경 쓰지 마라, 나는 알아 냈다. 좋아

, 나는 GROUP BY 절에서 사용할 수 없습니다 COUNT(*)

SELECT TIMESTAMPDIFF(YEAR, birthdate, CURDATE()) AS age, COUNT(*) 
FROM person 
GROUP BY age