MySQL:保证结果,十进制问题

时间:2011-11-13 05:07:41

标签: mysql decimal

我有一个包含以下属性的表:

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;

1 个答案:

答案 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;