[MariaDB] 내 주변 반경 n km 이내 데이터 가져오기

가비·2021년 9월 27일
0

[MariaDB]

목록 보기
1/3
SELECT
    (
      6371 * acos (
      cos ( radians( {목적지 위도} ) )
      * cos( radians( {내위치 위도} ) )
      * cos( radians( {목적지 경도} ) - radians( {내위치 경도} ) )
      + sin ( radians( {목적지 위도} ) )
      * sin( radians( {내위치 위도} ) )
    )
) AS distance
FROM places
HAVING distance < {원하는 반경 ex.500m면 0.5}
ORDER BY distance;

6371은 지구 반지름을 km로 나타낸 것으로 그냥 두고 radians의 괄호안의 값을 바꾸어 계산한다.
원하는 반경은 HAVING 절을 이용하여 조절 할 수 있다.
나는 places 테이블에 latitude와 longitude 컬럼이 있어 컬럼 값을 가지고와 계산하였고,
그 중 10km 이내 데이터를 조회하였다.

SELECT
    (
      6371 * acos (
      cos ( radians(latitude) )
      * cos( radians(37.56726109866003) )
      * cos( radians(longitude) - radians(127.1903672271528) )
      + sin ( radians(latitude) )
      * sin( radians(37.56726109866003) )
    )
) AS distance
FROM places
HAVING distance < 10
ORDER BY distance
LIMIT 0 , 10;
✨ result
+-------------------+
| distance          |
+-------------------+
| 5.183107413771042 |
| 5.325682485437883 |
|  5.76121672748217 |
| 7.224819777240822 |
| 8.514181604475779 |
| 8.950925292675505 |
| 9.241103258775375 |
| 9.249974510246574 |
| 9.314941889143482 |
| 9.464445622192283 |
+-------------------+

0개의 댓글