我在java中使用SQLite连接数据库,在数据库中用户将传递一些数据,SQLite将返回基于该结果的5个结果列表。
我无法找出使用两个变量来恢复最接近的匹配结果的代码方式
它自己的程序将使用经度和纬度搜索数据库中最近的5个火车站,并将它们排序到最远的地方,我的问题是Long和Lat将通过Android应用程序动态输入。所以我不能硬编码Long和Lat
这是我目前的代码
SELECT Latitude, Longitude, StationName FROM stations WHERE Latitude like '51%' AND Longitude like '-3%' LIMIT 5
正如你可以看到测试剩余的代码我已经使用了通配符和类似的选项让我看起来它的工作,但这只给我一个按字母顺序排列的所有列车站的完整列表,一个现实的lat将更像53.4198,最接近那个的火车站可能是53.4183。
请帮助
答案 0 :(得分:-1)
您必须计算距离,然后按该距离排序。我想这会对你有帮助。
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;
谢谢:)