SQL語句order by兩個字段同時排序問題

可能對不少網友來說非常簡單,但是我覺得在一定程度上對我還是有些迷惑之處,下面就通過hibernate中的HQL語句來介紹下這類問題的效果。

首先HQL語句代碼:

FROM Topic t WHERE t.id >2 ORDER BY t.type DESC,t.number DESC

也可以按照下面的寫法:

FROM Topic t WHERE t.id >2 ORDER BY t.type,t.number DESC

這行代碼理解起來實際上是非常簡單,首先查處topic表中id字段大於2的所有數據,然後對這些數據首先根據該表的type字段進行降序排序,然後再根據該表的number字段進行降序排序。下面就通過圖片來簡單介紹:
假設:t.id>2查詢後的數據爲:
這裏寫圖片描述

通過對t.type進行降序排序後結果爲:
這裏寫圖片描述
再通過對t.number進行降序排序後起初我認爲的結果爲:
這裏寫圖片描述
然而最總的結果爲:
這裏寫圖片描述

所以不難發現其時最終執行的不但是兩次排序,他是在保持滿足對type排序的前提下再對number排序。

這就非常適用於論壇中“置頂貼”和“普通貼”排序功能的實現。

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