计算距离现场和订单asc | desc

时间:2015-06-04 16:24:57

标签: sql distance live

因此,当我启动Web应用程序时,服务器获取用户地理位置并将其另存为变量(纬度/经度) 我有一个数据库:ID,名称,纬度,经度

现在我想从数据库中选择所有条目并按距离排序

我知道如何计算坐标之间的距离,但我不知道如何订购东西"生活"

你们可以给我一个如何解决这个问题的提示吗?

2 个答案:

答案 0 :(得分:2)

你可以做这样的事情

SELECT id,name,latitude,longitude, <Your_formula> distance from <table_name> order by distance

这是

的sqlfiddle

http://sqlfiddle.com/#!9/66644/2

答案 1 :(得分:1)

您可以在order by子句中指定距离计算(例如,其(经度+纬度)除以42)

select ID, Name, Latitude, Longitude, (Longitude + Latitude) / 42 as Distance
  from YourTable
 order by (Longitude + Latitude) / 42

但是,由于距离计算可能比(经度+纬度)/ 42略微复杂,您可能需要考虑根据结果集中列的序数对结果进行排序(我认为大多数数据库都支持这个)。所以像......

select ID, Name, Latitude, Longitude, /* Insert Distance Calculation Here */ as Distance
  from YourTable
 order by 5  -- Column ordinals are 1-based

你应该注意到这种方法存在一些问题。例如,如果更改了列的顺序或添加了列,则还必须更改order by序号,否则您将看到意外的结果。显然,如果您按字段名称或计算进行订购,这不是问题。