PHP MySQLi - WHERE“计算值小于”不起作用
Posted
技术标签:
【中文标题】PHP MySQLi - WHERE“计算值小于”不起作用【英文标题】:PHP MySQLi - WHERE "calculated value is smaller than" not working 【发布时间】:2019-04-06 08:43:55 【问题描述】:我得到了这个代码:
$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】:您不能在同一级别的 where 子句中重复 select 中定义的别名。但是,MySQL 有一个重载的 HAVING
运算符,您可以使用它:
FROM `eintrag`
HAVING distance < 20
ORDER BY distance
这里仅有的另外两个选项是在 WHERE
子句中重复整个 Haversine 公式(丑陋),或者包装当前查询然后使用子查询(性能较差)。
【讨论】:
以上是关于PHP MySQLi - WHERE“计算值小于”不起作用的主要内容,如果未能解决你的问题,请参考以下文章