1. 程式人生 > >SQL語句order by兩個欄位同時排序問題

SQL語句order by兩個欄位同時排序問題

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

首先HQL語句程式碼:

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

也可以按照下面的寫法:

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

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

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

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

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