2016-06-07 62 views
0

我有店裏的記錄在我的表中,我想根據商店的最高評價和它有最近的距離我的位置排序它們。多重訂單由MYSql

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

包含一些示例數據並顯示如何對它們進行排序。 – dcieslak

+0

我只想獲取評分最高,距離最短的商店 – zkn

回答

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