我在计算年龄时收到错误消息。
这是我的查询:
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”会输出得很好,它只是不允许我将它用作条件,我不知道为什么。
您不能在WHERE子句中使用列别名。使用整个表达式或使用HAVING子句,尽管这仅在之后应用ORDER BY(因此对于大型数据集可能非常低效)。
尝试这个
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 子句中使用别名年龄
这里是关于是否可以在 whre 子句中使用别名的答案
在我看来,你的括号太多了,这里:'%m/%d/%Y')))