首页 > 代码库 > Sql多条件排序
Sql多条件排序
多条件排序可以通过在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多条件排序
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。