php - PHP MySQLi - WHERE“计算值小于”不起作用
问题描述
我得到了这个代码:
$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 公式(丑陋),或者包装当前查询然后使用子查询(性能较差)。
推荐阅读
- python - Transformers 和 PyTorch 的权重和偏差?
- python - 具有 4D 图像的数据集:预期为 Byte,但发现为 Float
- python - 关于使用 pandas 处理 csv 文件
- php - PHP SQL Query 获取表中最常见的值
- r - 在 R 中编写一个函数来删除列中包含某些字符的文本?
- php - 更改消息 ID PHPMailer
- python - 我将如何将此作为嵌入式消息发送
- python - python如何从responde url打印authURL
- javascript - .JS 将日期 YYYY/MM/DD 更改为 DD/MM/YYYY
- c++ - mac可以在Xcode或VSC2019上将c++编译成windows exe吗?