最接近的匹配值 sqlite

科兹布克

我在 java 中使用 SQLite 连接到数据库,在数据库中用户将传递一些数据,SQLite 将基于此返回 5 个结果的列表。

我无法找出一种使用两个变量来恢复最接近匹配结果的代码方法

它自己的程序将使用经度和纬度在数据库中搜索 5 个最近的火车站,并将它们从最近到最远的地方排序,我的问题是经度和纬度将通过 android 应用程序动态输入。所以我不能硬编码 Long 和 Lat

这是我当前的代码

SELECT Latitude, Longitude, StationName FROM stations WHERE Latitude like '51%' AND Longitude like '-3%' LIMIT 5

正如您在测试其余代码时所看到的那样,我使用了通配符和类似选项来使我看起来可以正常工作,但是这只会给我按字母顺序排列的所有火车站的完整列表,现实的纬度是更像是 53.4198,离那个最近的火车站可能是 53.4183。

请帮助

肖汉·艾哈迈德·西詹

您必须计算距离,然后按该距离排序。我认为这会对你有所帮助。

SELECT Latitude, Longitude, StationName,
(
   3959 *
   acos(cos(radians(UserLatitude)) * 
   cos(radians(Latitude)) * 
   cos(radians(Longitude) - 
   radians(UserLongitude)) + 
   sin(radians(UserLatitude)) * 
   sin(radians(Latitude )))
) AS distance 
 FROM stations  
 ORDER BY distance ASC LIMIT 0,5;

谢谢 :)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章