在MySQL中,查詢圓形內的數據可以使用以下方法:
1. 使用經緯度計算距離的方式:
SELECT * FROM table_name WHERE????ACOS(SIN(radians(lat))??SIN(radians(target_lat))?+?COS(radians(lat))??COS(radians(target_lat))?
?????COS(radians(target_lng)?-?radians(lng)))??6371?<=?radius;
其中,table_name
是你的表名,lat
和lng
分別是存儲緯度和經度的字段名,target_lat
和target_lng
是目標圓心的緯度和經度,radius
是查詢的半徑(單位為千米)。
2. 使用地理空間索引的方式:
首先,確保表中的經緯度字段創建了地理空間索引。例如:
ALTER?TABLE?table_name?ADD?COLUMN?location?POINT; UPDATE?table_name?SET?location?=?POINT(lng,?lat); CREATE?SPATIAL?INDEX?idx_location?ON?table_name(location);
然后,使用以下查詢語句:
SELECT?* FROM?table_name WHERE?ST_Distance_Sphere(location,?POINT(target_lng,?target_lat))?<=?radius?*?1000;
其中,table_name
是你的表名,location
是存儲經緯度的字段名,target_lat
和target_lng
是目標圓心的緯度和經度,radius
是查詢的半徑(單位為千米)。
注意:第二種方法需要MySQL版本5.7以上,且啟用了地理空間索引功能。