Группировать по именованному столбцу

Asked
Viewd256

1

Я всегда забываю, как это делать.

У меня есть таблица базы данных с датами рождения, и я хочу узнать, сколько людей одного возраста.

Я пытаюсь:

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

но получаю ошибку

Неизвестный столбец "возраст" в "списке полей"

Как создать группу по именованному столбцу?

2 ответов

6

Псевдонимы нельзя использовать в предложениях group by или в других столбцах в списке выбора (да, это отстой).

 SELECT TIMESTAMPDIFF( YEAR, birthdate, CURDATE( ) ) AS age, COUNT( TIMESTAMPDIFF( YEAR, birthdate, CURDATE( ) ))
FROM  person
GROUP BY TIMESTAMPDIFF( YEAR, birthdate, CURDATE( ) )
 
  • Спасибо за объяснение.Да, эта часть MySQL расстраивает, когда она не работает так, как вы думаете.

    Matt McCormick09 ноября 2009, 20:20
  • Это одна из тех вещей, от которых каждый разработчик хотел бы работать так, как вы думаете.Я не понимаю, почему это не работает ... Я не могу представить, что это вызовет какие-то реальные проблемы ...

    Max Schmeling09 ноября 2009, 19:18
0

Да ладно, я понял.

Хорошо, мне нужно использовать COUNT(*)

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