利用mysql臨時變量排序

    有時我們需要做類似於銷量排序的問題,銷量相同的時候要有並列名次,類似於如下數據,我們要對num從大到小排名。

Id

num

1

1000

2

1000

3

500

4

4000

    利用mysql的臨時變量執行sql,其中臨時變量@a用於記錄排序,@b用於記錄上一行的num數值,並與本行的num數值做對比,若不相同則會觸發@a加一,若相同則@a數值不變

select a.num,(@a:= @a + (@b <> @b:=a.num)) rank from sale a,(select @a:=0,@b:=-1) t order by a.num desc;

    最終結果如下:

num

rank

4000

1

1000

2

1000

2

500

3

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章