按名称分组

按名称分组

问题描述:

我总是忘记如何做这样的事情。按名称分组

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

我想:

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

,但得到的错误

未知列 '时代' 在 '字段列表'

我如何可以通过做一组一个命名列?

别名不能在GROUP BY子句中使用,也不能在选择列表中的其他列(是的,这很烂)使用。

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

这是每个开发人员都希望能够工作的方式之一。我不明白为什么它不起作用......我无法想象这会造成任何实际问题...... – 2009-11-09 19:18:50

+0

感谢您的解释。是的,当它不能像你想象的那样工作时,这部分MySQL会感到沮丧。 – 2009-11-09 20:20:06

没关系,我想通了。

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

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