计算 live 的距离并按 asc|desc 顺序排列

calculate distance live and order asc|desc

所以当我启动网络应用程序时,服务器获取用户地理位置并将其保存为变量 (latitude/longitude) 我有一个数据库:ID、名称、纬度、经度

现在我想 select 数据库中的所有条目并按距离排序

我知道如何计算坐标之间的距离,但我不知道如何排序"live"

你们能告诉我如何解决这个问题吗?

你可以这样做

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

这是 sqlfiddle

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

您可以在 order by 子句

中简单地指定距离计算(例如,它的(经度 + 纬度)除以 42)
select ID, Name, Latitude, Longitude, (Longitude + Latitude) / 42 as Distance
  from YourTable
 order by (Longitude + Latitude) / 42

但是,由于距离计算可能比 (Longitude + Latitude) / 42 稍微复杂一些,您可能需要考虑根据结果集中列的序号对结果进行排序(我认为最数据库支持这一点)。所以像.....

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

你应该注意到这种方法有一些陷阱。例如,如果更改列的顺序或添加列,则 order by 序号也必须更改,否则您将看到意想不到的结果。显然,如果您按字段名称或计算方式排序,这不是问题。