按命名列分组

时间:2009-11-09 19:12:23

标签: mysql count group-by

我总是忘记如何做这样的事情。

我有一个带有生日的数据库表,我想知道有多少人有相同的年龄。

我正在尝试:

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

但得到错误

  

“字段列表”中的未知列“年龄”

如何在命名列上执行分组?

2 个答案:

答案 0 :(得分:6)

别名不能在group by子句中使用,也不能在选择列表的其他列中使用(是的,这很糟糕)。

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

答案 1 :(得分:0)

没关系,我想通了。

好的,我需要使用COUNT(*)

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