我有一个包含以下属性的表:
MyTable:
- double longitude
- double latitude
- varchar place_id
- varcar geoJSON_string
鉴于某些点具有经度x
和纬度y
,我需要选择k
最近点。
我知道我在查询结尾处添加了LIMIT k
,但有哪种方法可以保证k
条记录数据库中至少~250,000
个点?
另外,我怎么会查询小数值?我需要选择类似于以下内容的东西:
SELECT * FROM MyTable WHERE latitude=140.3**** and longitude=132.2**** LIMIT k;
答案 0 :(得分:2)
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;