집 >데이터 베이스 >MySQL 튜토리얼 >SQL을 사용하여 주어진 거리 내에서 가장 가까운 위도와 경도를 찾는 방법은 무엇입니까?
SQL을 사용하여 가장 가까운 위도와 경도를 찾는 쿼리
이 기사에서는 SQL을 사용하여 데이터베이스에서 특정 참조 좌표의 특정 범위 내에서 가장 가까운 경도와 위도를 검색하는 방법을 살펴봅니다.
문제 설명:
위도와 경도 값을 알고 있으며 위도와 경도와 가장 잘 일치하는 레코드를 데이터베이스에서 추출하고 싶습니다. 그러나 거리 임계값이 있습니다. 계산된 거리가 이 임계값을 초과하면 데이터가 검색되지 않습니다.
테이블 구조:
列名 | 数据类型 |
---|---|
id | 整数 |
纬度 | 十进制 |
经度 | 十进制 |
地名 | 字符串 |
城市 | 字符串 |
国家 | 字符串 |
州 | 字符串 |
邮编 | 整数 |
海拔 | 整数 |
쿼리문:
이 작업을 수행하기 위해 다음 SQL 쿼리를 사용합니다.
<code class="language-sql">SELECT 纬度, 经度, SQRT( POW(69.1 * (纬度 - [startlat]), 2) + POW(69.1 * ([startlng] - 经度) * COS(纬度 / 57.3), 2)) AS distance FROM 表名称 HAVING distance < 25 ORDER BY distance ASC;</code>
지침:
이 쿼리는 대권 거리 공식을 사용하여 기준 좌표([startlat], [startlng])와 테이블의 각 레코드 사이의 거리를 계산합니다. 계산된 거리가 지정된 임계값(이 예에서는 25km)보다 작으면 해당 기록이 결과에 포함됩니다. 쿼리는 또한 거리에 따라 오름차순으로 결과를 정렬하여 가장 가까운 레코드가 먼저 반환되도록 합니다.
위 내용은 SQL을 사용하여 주어진 거리 내에서 가장 가까운 위도와 경도를 찾는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!