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四个字段。

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

sql语句根据学生成绩排序(SQL用多个条件进行排序)(1)

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', '盗窃案', '台东', '技术开锁');

sql语句根据学生成绩排序(SQL用多个条件进行排序)(2)

未排序截图:

sql语句根据学生成绩排序(SQL用多个条件进行排序)(3)

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排序),结果截图:

sql语句根据学生成绩排序(SQL用多个条件进行排序)(4)

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语句根据学生成绩排序(SQL用多个条件进行排序)(5)


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

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

sql语句根据学生成绩排序(SQL用多个条件进行排序)(6)

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页