文章標題只是舉例子,實際情況是這樣的。
我們是報社出版商行業,要根據書籍的狀態作一個排序。
`state` VARCHAR(10) NULL DEFAULT '0000' COMMENT ' 資源狀態1已下架 2三審拒絕 3三審通過 4二審拒絕 5二審通過 6一審拒絕 7一審通過 8待審核
實際對應的代碼:
待審核 0000
一審通過 1000
一審拒絕 2000
二審通過 1100
二審拒絕 1200
三審通過 1111
三審拒絕 1120
已下架 1110
我們要讓排序的結果是這樣子降序的
待審核(0000) > 一審通過(1000) > 一審拒絕(2000) > 二審通過(1100) > 二審拒絕(1200) > 三審通過(1111) > 三審拒絕(1120) > 已下架(1100)
這些代碼是亂序的, 我要如何撰寫order by陳述句?
uj5u.com熱心網友回復:
order by FIELD(state,0000,1000,2000,1100,1200,1111,1120,1110);uj5u.com熱心網友回復:
@acAndcc
麻煩再看一下, 謝謝。
uj5u.com熱心網友回復:
麻煩再看一下,謝謝。uj5u.com熱心網友回復:
那就分成兩個結果來查,先查test=1的結果集,在查test= 0的結果集并排序,最后把這兩個結果集union 合并起來就可以啦uj5u.com熱心網友回復:
order by if(查test=1,null, field(....))uj5u.com熱心網友回復:
詳細一點可以嗎uj5u.com熱心網友回復:
麻煩 新建欄位,一個update更新,123456的,再selectuj5u.com熱心網友回復:
order by field(state ,'2','4','0','1','3')uj5u.com熱心網友回復:
我覺得可以簡單點,加個排序欄位排序欄位可以這么寫
select Case 審核狀態 when 0000 then 0
when 1000 then 1
else ''
end as '起個別名
然后Order by 的時候就按這個欄位進行排序就好了,Case里面再把其它的加進去就好
uj5u.com熱心網友回復:
用 case ,再 order byselect *,case when permit_use=2 then 0 when permit_use=0 then 1 else 2 end as odbfg from mytable
order by odbfg
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/101010.html
標籤:MySQL
