PHP MySQLi-在哪里“计算的值小于”不起作用

时间:2019-04-06 08:43:55

标签: php mysql sql mysqli

我得到了以下代码:

$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");

然后它不起作用,我没有任何结果。

如何正确处理?

预先感谢

1 个答案:

答案 0 :(得分:1)

您不能重复在同一级别的where子句中的select中定义的别名。但是,MySQL有一个重载的HAVING运算符,您可以使用它:

FROM `eintrag` 
HAVING distance < 20
ORDER BY distance

这里仅有的另外两个选项是重复WHERE子句中的整个Haversine公式(丑陋),或者包装当前查询,然后使用子查询(性能较低)。