我有一个具有这种结构的表
(location_name, address, latitude, longitude)
首先,用户输入两个位置名称和两个半径。
其次,数据库查找输入位置的纬度和经度。
(以下称为“entered_lat”和“entered_long”。)
第三,数据库查找并返回位于用户输入的两个半径相交处的位置。
当用户只输入一个位置和半径时,我使用了以下 SQL 语句。
SELECT location_name, latitude, longitude,
(6371*acos(cos(radians('entered_lat'))*cos(radians(latitude))*cos(radians(longitude)-
radians('entered_long'))+sin(radians('entered_lat'))*sin(radians(latitude))))
AS distance FROM location_table HAVING distance < 'entered_radius';
因此,我尝试使用以下 SQL 语句来查找两个半径的交点。
SELECT location_name, latitude, longitude,
(6371*acos(cos(radians('entered_lat1'))*cos(radians(latitude))*cos(radians(longitude)-
radians('entered_long1'))+sin(radians('entered_lat1'))*sin(radians(latitude))))
AS distance FROM location_table HAVING distance < 'entered_radius1'
AND
(6371*acos(cos(radians('entered_lat2'))*cos(radians(latitude))*cos(radians(longitude)-
radians('entered_long2'))+sin(radians('entered_lat2'))*sin(radians(latitude))))
AS distance FROM location_table HAVING distance < 'entered_radius2';
但是该 SQL 语句有语法错误。
如果数据库返回位于用户输入的两个半径相交处的位置,我该怎么办?
最佳答案
尝试在 SQL 语句中将 l_name 替换为 location_name。
关于mysql - 在 MySQL 上查找交叉点位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42239814/