我在计算年龄时收到错误。
这是我的问题:
SELECT (YEAR(CURDATE()) - YEAR(STR_TO_DATE(birthdate, '%m/%d/%Y'))) age, name
FROM pers
WHERE age >= 50
ORDER BY age DESC
LIMIT 100;
这是错误:
当我删除where子句时,#1054 - 'where子句'中的未知列'age'
答案 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')))