對SQL
排序,只要在order by
後面加字段就能夠了,能夠經過加desc
或asc
來選擇降序或升序。但排序規則是默認的,數字、時間、字符串等都有本身默認的排序規則。有時候須要按本身的想法來排序,而不是按字段默認排序規則。sql
好比字段值爲英文字段:Monday
、Tuesday
、Wednesday
等,若是按字段默認排序規則就爲:微信
Friday Monday Saturday Sunday Thursday Tuesday Wednesday
實際我須要的是:函數
Monday Tuesday Wednesday Thursday Friday Saturday Sunday
經過decode
函數能夠實現,以下:code
select * from table_date order by decode(DateStr, 'Monday',1 'Tuesday',2 'Wednesday',3 'Thursday',4 'Friday',5 'Saturday',6 'Sunday',7, 0);
後面的數字能夠不連續。排序
另外,還能夠用case when
來實現:字符串
select * from table_date order by (CASE DateStr WHEN 'Monday' then 1 WHEN 'Tuesday' then 2 WHEN 'Wednesday' then 3 WHEN 'Thursday' then 4 WHEN 'Friday' then 5 WHEN 'Saturday' then 6 WHEN 'Sunday' then 7 ELSE 0 END);
固然,把字段直接賦值爲對應的數字效率會高不少,經過另一張表再創建映射關係。get
歡迎訪問南瓜慢說 www.pkslow.com獲取更多精彩文章!table
歡迎關注微信公衆號<南瓜慢說>,將持續爲你更新...class
多讀書,多分享;多寫做,多整理。效率