728x90
반응형
MySQL에서 위도(latitude)와 경도(longitude)를 이용하여 가장 가까운 거리와 그 순서대로 데이터를 가져오는 쿼리는 다음과 같습니다.
SELECT *, 6371 * 2 * ASIN(SQRT(POWER(SIN(RADIANS(([target_latitude] - latitude) / 2)), 2) + COS(RADIANS([target_latitude])) * COS(RADIANS(latitude)) * POWER(SIN(RADIANS(([target_longitude] - longitude) / 2)), 2))) AS distance
FROM my_table
ORDER BY distance ASC;
위 쿼리에서 [target_latitude]와 [target_longitude]는 원하는 지점의 위도와 경도를 각각 입력해주시면 됩니다. 쿼리 실행 결과, 가장 가까운 거리부터 데이터가 반환됩니다. 반환되는 결과에는 "distance" 열이 추가되어, 각 데이터와 [target_latitude], [target_longitude] 간의 거리(km)가 계산됩니다.
위 쿼리는 Haversine 공식을 이용하여 두 지점 간의 대원거리(Haversine distance)를 계산합니다. 이를 이용하여 가장 가까운 거리와 그 순서대로 데이터를 정렬합니다. "6371"은 지구의 반경(km)을 나타내며, 위 쿼리에서는 이 값을 이용하여 km 단위의 거리를 계산합니다.
728x90
반응형
'프로그래밍 > mysql' 카테고리의 다른 글
MySQL 접속 차단 문제 해결: mysqladmin flush-hosts 명령어 사용법 (0) | 2024.06.20 |
---|---|
Got a packet bigger than 'max_allowed_packet' bytes에러 (0) | 2021.12.23 |