码迷,mamicode.com
首页 > 数据库 > 详细

Sql多条件排序

时间:2017-06-16 11:33:04      阅读:253      评论:0      收藏:0      [点我收藏+]

标签:sdn   分享   else   location   导入   images   实现   暴力   blog   

多条件排序可以通过在order by语句后面使用case when then条件语句来实现。

select * from 表名 ORDER BY case when 条件 then 0 else 1 end

 

例子:

1.创建表case_test

共有id,case_type,case_location,case_way四个字段。

2.导入数据:

INSERT INTO "XIANGZH"."case_test" VALUES (‘1‘, ‘盗窃案‘, ‘台东‘, ‘技术开锁‘);
INSERT INTO "XIANGZH"."case_test" VALUES (‘88‘, ‘谋杀案‘, ‘台东‘, ‘技术开锁‘);
INSERT INTO "XIANGZH"."case_test" VALUES (‘99‘, ‘盗窃案‘, ‘江西路‘, ‘技术开锁‘);
INSERT INTO "XIANGZH"."case_test" VALUES (‘5‘, ‘盗窃案‘, ‘台东‘, ‘暴力开锁‘);
INSERT INTO "XIANGZH"."case_test" VALUES (‘6‘, ‘盗窃案‘, ‘江西路‘, ‘暴力开锁‘);
INSERT INTO "XIANGZH"."case_test" VALUES (‘7‘, ‘谋杀案‘, ‘台东‘, ‘暴力开锁‘);
INSERT INTO "XIANGZH"."case_test" VALUES (‘8‘, ‘谋杀案‘, ‘江西路‘, ‘技术开锁‘);
INSERT INTO "XIANGZH"."case_test" VALUES (‘9‘, ‘谋杀案‘, ‘江西路‘, ‘暴力开锁‘);
INSERT INTO "XIANGZH"."case_test" VALUES (‘10‘, ‘盗窃案‘, ‘台东‘, ‘技术开锁‘);

未排序截图:

技术分享

 

3.多条件分组排序

select * from "case_test" ORDER BY 
case when "case_type"=‘盗窃案‘ then 0 else 1 end,
case when "case_location" = ‘台东‘ then 0 else 1 end,
case when "case_way" = ‘技术开锁‘ then 0 else 1 end ASC

查询结果是按照条件分组排序,截图:

技术分享

 

 4.满足条件个数排序 

select * from "case_test" ORDER BY 
case 
when "case_type"=‘盗窃案‘ and "case_location" = ‘台东‘ and "case_way" = ‘技术开锁‘ then 0
when "case_type"=‘盗窃案‘ and "case_location" = ‘台东‘ then 1
when "case_type"=‘盗窃案‘ and "case_way" = ‘技术开锁‘ then 2
when "case_location" = ‘台东‘ and "case_way" = ‘技术开锁‘ then 3
when "case_type"=‘盗窃案‘ then 4
when "case_location" = ‘台东‘ then 5
when "case_way" = ‘技术开锁‘ then 6
else 7
end

查询结果是按照满足条件的个数排序,截图:

技术分享

 

如果有更合理的sql写法,欢迎留言讨论。

 

参考:

ORACLE按条件排序的例子

Oracle怎么按条件排序

 

Sql多条件排序

标签:sdn   分享   else   location   导入   images   实现   暴力   blog   

原文地址:http://www.cnblogs.com/Jason-Xiang/p/7026354.html

踩
(0)
赞
(0)
   
举报
评论 一句话评论(0)
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!