2016-03-24 11 views
0

ストアドプロシージャを実行しようとするとこのエラーが発生します。ストアドプロシージャエラーの不明な列mySQL

mysql> call get_nearby; 

ERROR 1054(42S22):私が持っている

CREATE PROCEDURE get_nearby() BEGIN SET @lat = 10; set @long = 12; 
SELECT id, 
    @long - radius/abs(cos(radians(@lat)) * 69) as longRadius, 
    (radius/69) as latRadius 
FROM area 
WHERE longitude between @long + longRadius and @long - longRadius 
AND latitude between @lat + latRadius and @long - latRadius; 
END 

:不明欄の 'longRadius' 'WHERE句' ここ

は、ストアドプロシージャを作成するためのSQLがありますなぜそれが記載された列名を認識していないのか分かりません。当面は@latと@longを設定してテストを簡単にしています。

ご協力いただければ幸いです。

+4

where句で列別名を使用することはできません。 http://stackoverflow.com/a/942592/4843530を参照してください。 – AgapwIesu

+0

今日のヒント:派生テーブルを使用してください! – jarlh

答えて

2

where句で列別名を使用することはできません。そのwhere節を "having"節に変換して、別名を使用させることができます。詳細情報herehereを入手できます。 MySQLのドキュメントから

標準SQLはWHERE句でカラムのエイリアスへの参照を禁止します。 WHERE句が と評価された場合、列の値がまだ決定されていない可能性があるため、この制限が課されます。

また、計算をwhere句に再入力するか、サブクエリを使用することもできます。

関連する問題