MySQL:Guarenteeの結果、小数点の問題

私は次の属性を持つテーブルを持っています:

MyTable:
- double longitude 
- double latitude
- varchar place_id
- varcar geoJSON_string

経度 x と緯度 y を持つ点がある場合、 k
最も近い点を選択する必要があります。

私はクエリの終わりに LIMIT k
を付けることを知っていますが、〜250,000 のデータベースから少なくとも k
/code>レコード?

また、小数点値をどのように照会することもできますか?私は次のようなものを選択する必要があります:

SELECT * FROM MyTable WHERE latitude=140.3**** and longitude=132.2**** LIMIT k;
ベストアンサー

SELECT * FROM MyTable WHERE latitude BETWEEN '140.3' AND '140.4' AND longitude BETWEEN '132.2' AND '132.3' LIMIT k;

または、最良の結果が必要な場合は:

SELECT * FROM MyTable ORDER BY ABS(ABS(searched-lon - longitude) - ABS(searched-lat - latitude)) ASC LIMIT k;

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です