0

年齢計算中にエラーが発生しました。

これが私の質問です:

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」は問題なく出力されます。条件として使用できず、理由がわかりません。

4

3 に答える 3

1

WHERE句で列エイリアスを使用することはできません。式全体を使用するか、HAVING句を使用しますが、これは(の後にのみ適用されますORDER BY(したがって、大きなデータセットでは非常に非効率になる可能性があります)。

于 2013-03-10T19:17:41.227 に答える
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句でエイリアス年齢を使用できます

ここで、 whre句でエイリアスを使用できるかどうかの答え

于 2013-03-10T19:21:54.970 に答える
-1

ブラケットが多すぎるように見えます。ここでは:'%m /%d /%Y')))

于 2013-03-10T19:15:58.997 に答える