ORDER BY一个较高级的用法

系统 1642 0

order by用于对查询结果按字段进行排序,可以是单字段排序,也可以是多字段排序。现在想用order by实现这样的排序功能,对查询出来的数据首先按condition A分成两组,然后两组数据分别使用不同的排序方法,其中一组按字段a, b进行倒排序,另一组按c,b进行倒排序。例如:要求对table_a中的数据进行查询排序,排序方案是这样要求的:

(1) ID>=20的记录要排在ID<20的前面;

(2) ID >=20的记录按字段a进行倒排序,按b进行倒排序;

(3) ID< 20的记录按字段c进行倒排序,按b进行倒排序;

sql语句如下:

  1. select  *  from  table_a  
  2. order   by   case   when  ID >= 20  then  0  else  1  end ,   
  3.           case   when  ID >= 20  then  a  else  c  end   desc ,  
  4.          b  desc   

case when 可以使用数字和表字段名。使用数字的时候可以理解为桶号,桶号小的排在前面,桶号大的排在后面;使用字段的时候就是和普通order by语句一个用法。

 

转自:http://blog.csdn.net/iamke1987/article/details/7431286

ORDER BY一个较高级的用法


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论