可能對不少網友來說非常簡單,但是我覺得在一定程度上對我還是有些迷惑之處,下面就通過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排序。
這就非常適用於論壇中“置頂貼”和“普通貼”排序功能的實現。