年龄计算不起作用

时间:2013-03-10 19:13:28

标签: mysql where

我在计算年龄时收到错误。

这是我的问题:

SELECT (YEAR(CURDATE()) - YEAR(STR_TO_DATE(birthdate, '%m/%d/%Y'))) age, name
FROM pers 
WHERE age >= 50 
ORDER BY age DESC 
LIMIT 100;

这是错误:

  

#1054 - 'where子句'中的未知列'age'

当我删除where子句时,“age”将输出正常,它只是不允许我将它用作条件而且我不确定原因。

3 个答案:

答案 0 :(得分:1)

您不能在WHERE子句中使用列别名。使用整个表达式或使用HAVING子句,尽管这只在ORDER BY之后应用(因此对于大型数据集来说效率可能非常低)。

答案 1 :(得分:1)

试试这个

 SELECT (YEAR(CURDATE()) - YEAR(STR_TO_DATE(birthdate, '%m/%d/%Y'))) age, name
 FROM pers 
 WHERE (YEAR(CURDATE()) - YEAR(STR_TO_DATE(birthdate, '%m/%d/%Y')))  >= 50 
 ORDER BY age DESC 
 LIMIT 100;

您可以在where子句

中使用别名年龄

here an answer如果您可以在where子句

中使用别名

答案 2 :(得分:-1)

在我看来,你有一个支架太多,这里:'%m /%d /%Y')))