1
我总是忘记如何做这样的事情。按名称分组
我有一个生日数据库表,我想知道有多少人有同样的年龄。
我想:
SELECT TIMESTAMPDIFF(YEAR, birthdate, CURDATE()) AS age, COUNT(age)
FROM person
GROUP BY age
,但得到的错误
未知列 '时代' 在 '字段列表'
我如何可以通过做一组一个命名列?
我总是忘记如何做这样的事情。按名称分组
我有一个生日数据库表,我想知道有多少人有同样的年龄。
我想:
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())
没关系,我想通了。
好吧,我需要使用COUNT(*)
SELECT TIMESTAMPDIFF(YEAR, birthdate, CURDATE()) AS age, COUNT(*)
FROM person
GROUP BY age
这是每个开发人员都希望能够工作的方式之一。我不明白为什么它不起作用......我无法想象这会造成任何实际问题...... – 2009-11-09 19:18:50
感谢您的解释。是的,当它不能像你想象的那样工作时,这部分MySQL会感到沮丧。 – 2009-11-09 20:20:06