【问题标题】:Group by named column按命名列分组
【发布时间】:2010-12-14 18:10:03
【问题描述】:

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

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

我正在尝试:

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

但得到错误

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

如何对命名列进行分组?

【问题讨论】:

    标签: mysql count group-by


    【解决方案1】:

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

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

    【讨论】:

    • 这是每个开发人员都希望按照您认为的方式工作的事情之一。我不明白为什么它不起作用......我无法想象它会导致任何实际问题......
    • 感谢您的解释。是的,当 MySQL 的这一部分不能像你想象的那样工作时,它是令人沮丧的。
    【解决方案2】:

    没关系,我想通了。

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

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

    【讨论】:

      猜你喜欢
      • 2019-08-21
      • 2018-05-29
      • 1970-01-01
      • 2019-12-08
      • 2018-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-25
      相关资源
      最近更新 更多