对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
多读书,多分享;多写做,多整理。效率