10

MySQL (テーブル)

id | url |    lat    |    lng
----------------------------------
1  |  x  | 44.339565 | -101.337891
----------------------------------
2  |  y  | 44.150681 | -101.074219
----------------------------------
3  |  z  | 43.897892 | -100.634766

ここでやりたいことは、(43.834527,-99.140625) に近い順にリストを並べ替えることです。

$a = mysql_query("SELECT * FROM table ORDER BY proximity DESC");
while($b = mysql_fetch_assoc($a))
{
echo $b['url'].'<br />';
}
4

1 に答える 1

12

次のプレゼンテーションをご覧になることをお勧めします。

著者は、MySQL でHaversine Formulaを使用して近接度で並べ替え、検索を定義された範囲に制限する方法について説明しています。彼はまた、緯度と経度の列に従来のインデックスを使用して、そのようなクエリの完全なテーブル スキャンを回避する方法についても説明しています。


1 PDF版

于 2010-09-06T22:15:07.747 に答える