gpt4 book ai didi

mysql - 从mysql中的两个表获取空间点之间的距离的问题

转载 作者:太空宇宙 更新时间:2023-11-03 12:12:00 25 4
gpt4 key购买 nike

我的查询是

SELECT A.broker_property_id, A.broker_owner_id
FROM property_requirement_new AS A,
(SELECT X(latlong), Y(latlong)
FROM client_property_new
WHERE property_id = 132) AS B
WHERE (POW((A.X(latlong)-B.X(latlong))*111.12, 2) + POW((A.Y(latlong) - B.Y(latlong))*111.12, 2)) <= 4

这里,latlong是mysql的POINT数据类型的字段。但是这个查询没有被执行并且显示了以下错误:

FUNCTION a.X 不存在

谁能帮我找出正确的方法或找出我的代码中的错误?

最佳答案

X 和 Y 是将点(几何)作为输入的函数。它不是表 A 的函数,正如您所写的那样,即 A.X(latlong) 抛出错误,因为它暗示 X 是表 A 的函数。

你需要写

select X(latlon), Y(latlon) from A

或者在您的情况下,如果您使用子查询:

select X(A.latlon), Y(A.latlong) from (.....) A

显然在 MySQL 5.6 中有一个 ST_Distance 函数,但我从未使用过它,而且它似乎有点没有记录。

这里有一些关于 MySQL 中距离函数的讨论:Fastest Way to Find Distance Between Two Lat/Long Points MySQL 中空间的一个普遍问题是它不支持正确的投影,所以你要么在平面坐标上做毕达哥拉斯,要么实现某个版本的半正弦公式并假设世界是一个球体——这会很好地工作如果您最关心的不是大规模精度,则适用于短距离。

关于mysql - 从mysql中的两个表获取空间点之间的距离的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23873303/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com