我得到了以下代码:
$userquery = mysqli_query($con, "SELECT *,
( 3959 * acos( cos( radians('$latme') ) *
cos( radians( latitude ) ) *
cos( radians( longitude ) -
radians('$lonme') ) +
sin( radians('$latme') ) *
sin( radians( latitude ) ) ) )
AS distance
FROM `eintrag`
ORDER BY distance ASC");
并获得从0.1到999的距离的结果。
现在,当我尝试仅获取距离小于20的结果时:
FROM `eintrag`
WHERE distance < 20
ORDER BY distance ASC");
然后它不起作用,我没有任何结果。
如何正确处理?
预先感谢
答案 0 :(得分:1)
您不能重复在同一级别的where子句中的select中定义的别名。但是,MySQL有一个重载的HAVING
运算符,您可以使用它:
FROM `eintrag`
HAVING distance < 20
ORDER BY distance
这里仅有的另外两个选项是重复WHERE
子句中的整个Haversine公式(丑陋),或者包装当前查询,然后使用子查询(性能较低)。