開發中遇到乙個需求:分頁查詢某實體類,將狀態為待審核的放在最前面,同時按照建立該實體的建立時間來降序...
方案一:
取出資料在service層進行重組,但這種方式無法保證將所有為待審核狀態的實體放在最前面,因為分頁查詢不是將所有符合條件的資料都查出來,它會根據你每頁需要顯示的條數來查詢出多少條資料來。
所以,不可行!
方案二:
用到sql語句中的 union all 將兩個子查詢連線起來,先查出符合條件的所有為待審核狀態的已經按建立時間降序的實體出來,將其與符合條件的所有為非待審核狀態的已經按建立時間降序的實體 union all ...
這裡雖然解決了將待審核狀態的實體放在前面的問題了,但是這也導致了實體沒有按照建立時間排序,這應該與 union all 的實現機制有關,沒有繼續深究!
方案三:
select ... from tab1 t1 where ... order by ( case when t1.state = 『待審核』 then 0 else 1 end),t1.createdate desc;
解決需求...
sql排序,對欄位指定值排序順序
我們知道在sql sever中排序主要兩種,順序,降序。問題簡述如下 字段值 1 4 8 6,公升序是1 4 6 8,降序是 8 6 4 1,怎麼讓他排成4 8 6 1。語句1 selectid from table where id in 1,4,8,6 order by charindex co...
mysql指定值排序 mysql某列指定值靠前排序
單個列靠前排序 mysql 某列指定值靠前排序 order by case select from jcxsw t company product order by case when id 263 then 1 else 4 end category id desc 這段sql 會先排列id 26...
SQL排序後將序號填入指定字段
如果資料沒有刪除的情況下主鍵與行號是一致的,但在刪除某些資料,行號就與主鍵不一致了,這時需要查詢行號就需要用新的方法,在sql server2005之前,需要使用臨時表,但在sql server2005中,使用row number 非常方便。以下是乙個查詢語句,意思是按照cid將資料排序,然後將排序...