IT俱乐部-城北日常经验分享

浏览: 45    评论: 0

背景:有些时间需要特定的排序方式,不能按正常的顺序排列,那么有什么命令可以实现呢,


SQL select order by排序 让指定的字符排在前面的方面


背景:有些时间需要特定的排序方式,不能按正常的顺序排列,那么有什么命令可以实现呢,

现有地区表area_info,地区表只有一个字段admincode,表示地区编号,要求查询所有地区编号出来,其中“1305”开头的编号排在首位,“1307”开头的编号排在第二位。


使用SQL语句的order by 和case when进行优先级排序:


select * from area_info where admincode like '13%' 

order by 

case when admincode like '1305%' then 1 else 10 end,

case when admincode like '1307%' then 2 else 10 end;


其中“1”和“2”所在位置的内容只是组别,不超过10不影响排序。对比结果如下:


如果还想进行二级排序,令每一个组合里(这里1305为一个组合)升序排序:


select * from area_info where admincode like '13%' 

order by 

case when admincode like '1305%' then 5 else 10 end,

case when admincode like '1307%' then 2 else 10 end,

admincode;



全文详见:http://it-club.cn/post/594.html

TOP

评论列表


发表评论
来宾的头像

TOP

网站分类

TOP

站点信息

  • 文章总数:592
  • 页面总数:1
  • 分类总数:3
  • 标签总数:21
  • 评论总数:184
  • 浏览总数:432510