order by根据参数进行排序_SQL用多个条件进行排序;以及根据一个条件的多个值,进行排序...

本文介绍了如何在SQL中使用CASE WHEN THEN语句进行多条件排序,通过示例展示了如何先按case_type,再按case_location,最后按case_way排序。此外,还展示了按满足条件的个数进行排序的查询方法。对于SQL排序有更深入探讨的需求,作者邀请读者留言交流。
摘要由CSDN通过智能技术生成

概述

多条件排序可以通过在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四个字段。

create table case_test(id number(5),case_type varchar2(20),case_location varchar2(20),case_way varchar2(20));
fefde131bb1306d61cd7c609a0a614bf.png

2.导入数据:

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

未排序截图:

8b72ff593b95fdcec7991c8fc3dcf2ff.png

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

查询结果是按照条件分组排序(先按case_type排序,再按case_location排序,最后按case_way排序),结果截图:

d939e120e67680f16a35508c4865de26.png

4.满足条件个数排序

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

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

506eaa5e1432b60c26b47fd206a271ca.png

篇幅有限,关于sql多条件排序就介绍到这了,大家觉得有没什么地方可以做优化呢?欢迎留言一起探讨。

后面会分享更多DBA方面内容,感兴趣的朋友可以关注下!

5396087663fa83be25da8b6d21c7198d.gif
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值