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“计算值小于”不起作用的主要内容,如果未能解决你的问题,请参考以下文章

如何根据 WHERE 条件使用 mysqli 进行 SELECT 和 DELETE 和 RETURN 单行

php 通过mysqli 操作数据库mysql

MYSQLI - mysqli操作数据库

PHP MySQL Where 子句

PHP MySQL Where 子句

mySQLi 插入脚本永远占用