2009-11-09 119 views
1

我總是忘記如何做這樣的事情。按名稱分組

我有一個生日數據庫表,我想知道有多少人有同樣的年齡。

我想:

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

,但得到的錯誤

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

我如何可以通過做一組一個命名列?

回答

6

別名不能在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

0

沒關係,我想通了。

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

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