我在我的桌子上有商店记录,我想根据商店的最高评级和距我所在地最近的距离对它们进行排序。
SELECT rating,
( 3959 * acos( cos( radians(37) )
* cos( radians( lat ) )
* cos( radians( lon )
- radians(-122) )
+ sin( radians(37) )
* sin( radians( lat ) )
)
) AS distance
FROM mystores sr
order by sr.rating desc ,distance asc
它没有给我我想要的结果
表Mystores
id|rating|distance
66 5 55
55 4 56
99 3 60
答案 0 :(得分:0)
我假设您只想要最近的商店,并且您希望忽略具有相同等级但距离更远的所有其他商店。 通过raiting的小组允许我们获得每次raiting的最小距离。
select m1.*
from mystores m1
join (
select m.raiting,
min(m.distance) distance
from mystores m
group by m.raiting
) m2
on m2.raiting = m1.raiting and
m2.distance = m1.distance
order by m1.raiting desc, m1.distance asc