多条件排序可以通过在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 ('', '盗窃案', '台东', '技术开锁');
INSERT INTO "XIANGZH"."case_test" VALUES ('', '谋杀案', '台东', '技术开锁');
INSERT INTO "XIANGZH"."case_test" VALUES ('', '盗窃案', '江西路', '技术开锁');
INSERT INTO "XIANGZH"."case_test" VALUES ('', '盗窃案', '台东', '暴力开锁');
INSERT INTO "XIANGZH"."case_test" VALUES ('', '盗窃案', '江西路', '暴力开锁');
INSERT INTO "XIANGZH"."case_test" VALUES ('', '谋杀案', '台东', '暴力开锁');
INSERT INTO "XIANGZH"."case_test" VALUES ('', '谋杀案', '江西路', '技术开锁');
INSERT INTO "XIANGZH"."case_test" VALUES ('', '谋杀案', '江西路', '暴力开锁');
INSERT INTO "XIANGZH"."case_test" VALUES ('', '盗窃案', '台东', '技术开锁');

未排序截图:

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

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多条件排序的更多相关文章

  1. Mysql->order by SQL 根据多个条件排序

    Mysql中根据多个条件排序:(各个条件间使用逗号隔开)   首先根据class_name字符串长短升序排列,然后根据开始时间降序排列: SELECT * FROM signup_class s OR ...

  2. 不简单的SQL查询和排序语句

    真不简单!! 一:使用select语句进行查询 语法: SELECT    <列名> FROM      <表名> [WHERE    <查询条件表达式>] [OR ...

  3. Oracle order by case when 多条件排序

    ORACLE sql 排序 根据两个条件排序,根据id号由小到大排序,同时country字段是北京的排最前面前面,其次上海,..大连,最后是其他城市,怎么写? 写法如下:select * from p ...

  4. SqlServer分页存储过程(多表查询,多条件排序),Repeater控件呈现数据以及分页

        存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出 ...

  5. SQL语句分组排序,多表关联排序

    SQL语句分组排序,多表关联排序总结几种常见的方法: 案例一: 在查询结果中按人数降序排列,若人数相同,则按课程号升序排列? 分析:单个表内的多个字段排序,一般可以直接用逗号分割实现. select ...

  6. util-C# 复杂条件查询(sql 复杂条件查询)查询解决方案

    ylbtech-funcation-util:  C# 复杂条件查询(sql 复杂条件查询)查询解决方案 C# 复杂条件查询(sql 复杂条件查询)查询解决方案 1.A,Ylbtech.Model返回 ...

  7. Javascript 迭代法实现数组多条件排序

    多条件排序可能有很多种思路,效率也各不相同,我的方法可能只适合自己用,毕竟目的是为了实现功能,所以采用了最笨的方法,不过效果还是很理想的,经过多次测试,6列1000行数据,平均排序时间大约是:28ms ...

  8. 飘逸的python - 多条件排序及itemgetter的应用

    曾经客户端的同事用as写一大堆代码来排序,在得知python排序往往只需要一行,惊讶无比,遂对python产生浓厚的兴趣. 之前在做足球的积分榜的时候需要用到多条件排序,如果积分相同,则按净胜球,再相 ...

  9. 飘逸的python - 有的升序有的降序的情况下怎么多条件排序

    之前在统计导出各区服玩家消费的时候需要进行升序降序混搭的多条件排序. 需求是这样的.区服从小到大排,如果区服相同,则按消费从大到小排. 实现方法是利用python的sort算法是稳定排序,对数据进行多 ...

随机推荐

  1. 实时竞价(RTB) 介绍(基础篇)

    前言: 说到"实时竞价"大家一定都不陌生,那么为何如今实时竞价发展这么迅猛,当然这个主要得益于总体移动互联网环境的成熟,以及中国本地移动广告市场出现爆发式增长.那么到底什么是实时竞 ...

  2. C++学习笔记34 模版的原理

    模版在C++中具有很重要的地位.STL就是大量运用模版写出来的. 模版的长处我就不一一列举了.这里我仅仅说一下模版的原理. 当编译器遇到模版方法定义的时候,编译器进行语法检查,可是并不会编译模版.编译 ...

  3. java - day10 - TetrominoTesting

    图形试验,主要 向上造型 package com.example; /** * Created by Administrator on 17-5-23. */ public class Tetromi ...

  4. pthread linux mutet:example1

    #include<iostream> #include<unistd.h> #include<pthread.h> #include<string> u ...

  5. 基于AR9331(MIPS架构)分析系统启动过程(uboot)

    前提: 1.AR9331是基于MIPS 24K CPU的一款WIFI1X1芯片,其SDK采用uboot作为引导.AR9331中定义的基地址是:0x9f00,0000 2.MIPS24K芯片,将固定的起 ...

  6. GCD XOR UVA 12716 找规律 给定一个n,找多少对(a,b)满足1<=b<=a<=n,gcd(a,b)=a^b;

    /** 题目:GCD XOR UVA 12716 链接:https://vjudge.net/problem/UVA-12716 题意:给定一个n,找多少对(a,b)满足1<=b<=a&l ...

  7. NDK 安装小结

    建议先看后面的错误,可以先执行那些命令以免出现相关问题. chmod a+x android-ndk-r10c-linux-x86_64.bin ./android-ndk-r10c-linux-x8 ...

  8. 字符串截取mb_substr

    mb_substr("字符串","截取开始位置","截取个数","编码格式如UTF-8")

  9. Linux 进程创建二(execve和wait)

    三:execve系统调用 int execve(const char *filename, char *const argv[],char *const envp[]); fork创建了一个新的进程, ...

  10. [前端开发] 未来趋势“无后端”的web应用开发模式

    最近看到前端趋势2013大会上的一篇文章,题目是<各位快看,不用后端>,觉得有点意思,恰好近期的一次讨论及半年前的一次开发实践也涉及到这种模式,简单谈谈我的想法. 不得不说,文章的题目确实 ...