PHP MySQLi - WHERE "calculated value is smaller than"不工作

标签 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");

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

如何做对?

提前致谢

最佳答案

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

FROM `eintrag` 
HAVING distance < 20
ORDER BY distance

此处仅有的其他两个选项是在 WHERE 子句中重复整个 Haversine 公式(丑陋),或者包装当前查询然后使用子查询(性能较差)。

关于PHP MySQLi - WHERE "calculated value is smaller than"不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55547356/

相关文章:

PHP - FTP 列表文件

php - 使用 composer 安装 php-amqplib(RabbitMQ) 失败

php - Magento - 将随机产品添加到.../template/catalog/product/view.phtml

php - UTF-8贯穿始终

php - 如何在 WordPress 多站点中显示最近的全局帖子

mysql - 如何优化 MySQL 索引/查询以进行模块化搜索?

mysql - 由于转换记录 : 失败,请求回滚字段 "field_images"

sql - SQL中如何对连续记录进行分组

sql - 仅插入具有默认值或空值的行

python - 如何在 pandas/sql 中按分层数据分组?