2013-12-23 22 views
1

我有一个项目表,每个项目都有经度和纬度值,可以计算距离。分配的查询变量不被识别

我尝试以下,但它返回:Unknown column distance in where clause

select (3959 * acos(cos(radians('53.993252')) 
* cos(radians(latitude)) 
* cos(radians(longitude) 
- radians('-0.432470')) 
+ sin(radians('53.993252')) 
* sin(radians(latitude)))) AS distance from items where distance < 1000 
+0

[使用列别名WHERE的MySQL条款(http://stackoverflow.com/questions/942571/using-column-alias-in-where-clause- of-mysql-query-produce-an-error) – valex

回答

2
select (3959 * acos(cos(radians('53.993252')) 
* cos(radians(latitude)) 
* cos(radians(longitude) 
- radians('-0.432470')) 
+ sin(radians('53.993252')) 
* sin(radians(latitude)))) AS distance from items having distance < 1000 

WHERE犯规看到别名使用HAVING

+0

嗯,我很害怕这个问题,这导致我面临更大的问题......我会把它作为一个单独的问题发布 - 非常感谢! –

1

您可以使用子查询 -

SELECT * FROM (
    SELECT 
    (3959 * ACOS(COS(RADIANS('53.993252')) * COS(RADIANS(latitude)) * COS(RADIANS(longitude) - RADIANS('-0.432470')) + SIN(RADIANS('53.993252')) * SIN(RADIANS(latitude)))) AS distance 
    FROM items)t 
WHERE distance < 1000;