存储过程错误未知列mySQL

存储过程错误未知列mySQL,mysql,sql,prepared-statement,Mysql,Sql,Prepared Statement,我在尝试运行存储过程时遇到此错误 mysql> call get_nearby; 错误1054(42S22):“where子句”中的未知列“longRadius” 以下是创建存储过程的sql语句: CREATE PROCEDURE get_nearby() BEGIN SET @lat = 10; set @long = 12; SELECT id, @long - radius / abs(cos(radians(@lat)) * 69) as longRadius, (r

我在尝试运行存储过程时遇到此错误

mysql> call get_nearby;
错误1054(42S22):“where子句”中的未知列“longRadius”

以下是创建存储过程的sql语句:

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
我不知道为什么它不能识别指定的列名。目前,我已经在开始时设置了@lat和@long来简化测试


非常感谢您的帮助。

您不能在where子句中使用列别名。您可以将where子句转换为“having”子句,然后使用别名。您可以获得更多信息和帮助

从Mysql文档:

标准SQL不允许在WHERE子句中引用列别名。 施加此限制是因为当WHERE子句 评估后,可能尚未确定列值


您也可以在where子句中重述计算,或使用子查询。

您不能在where子句中使用列别名。您可以将where子句转换为“having”子句,然后使用别名。您可以获得更多信息和帮助

从Mysql文档:

标准SQL不允许在WHERE子句中引用列别名。 施加此限制是因为当WHERE子句 评估后,可能尚未确定列值


您也可以在where子句中重述计算,或使用子查询。

where子句中不能使用列别名。请参阅。今天的提示:使用派生表!不能在where子句中使用列别名。请参阅。今天的提示:使用派生表!