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 ('', '盗窃案', '台东', '技术开锁');
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写法,欢迎留言讨论。
参考:
Sql多条件排序的更多相关文章
- Mysql->order by SQL 根据多个条件排序
Mysql中根据多个条件排序:(各个条件间使用逗号隔开) 首先根据class_name字符串长短升序排列,然后根据开始时间降序排列: SELECT * FROM signup_class s OR ...
- 不简单的SQL查询和排序语句
真不简单!! 一:使用select语句进行查询 语法: SELECT <列名> FROM <表名> [WHERE <查询条件表达式>] [OR ...
- Oracle order by case when 多条件排序
ORACLE sql 排序 根据两个条件排序,根据id号由小到大排序,同时country字段是北京的排最前面前面,其次上海,..大连,最后是其他城市,怎么写? 写法如下:select * from p ...
- SqlServer分页存储过程(多表查询,多条件排序),Repeater控件呈现数据以及分页
存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出 ...
- SQL语句分组排序,多表关联排序
SQL语句分组排序,多表关联排序总结几种常见的方法: 案例一: 在查询结果中按人数降序排列,若人数相同,则按课程号升序排列? 分析:单个表内的多个字段排序,一般可以直接用逗号分割实现. select ...
- util-C# 复杂条件查询(sql 复杂条件查询)查询解决方案
ylbtech-funcation-util: C# 复杂条件查询(sql 复杂条件查询)查询解决方案 C# 复杂条件查询(sql 复杂条件查询)查询解决方案 1.A,Ylbtech.Model返回 ...
- Javascript 迭代法实现数组多条件排序
多条件排序可能有很多种思路,效率也各不相同,我的方法可能只适合自己用,毕竟目的是为了实现功能,所以采用了最笨的方法,不过效果还是很理想的,经过多次测试,6列1000行数据,平均排序时间大约是:28ms ...
- 飘逸的python - 多条件排序及itemgetter的应用
曾经客户端的同事用as写一大堆代码来排序,在得知python排序往往只需要一行,惊讶无比,遂对python产生浓厚的兴趣. 之前在做足球的积分榜的时候需要用到多条件排序,如果积分相同,则按净胜球,再相 ...
- 飘逸的python - 有的升序有的降序的情况下怎么多条件排序
之前在统计导出各区服玩家消费的时候需要进行升序降序混搭的多条件排序. 需求是这样的.区服从小到大排,如果区服相同,则按消费从大到小排. 实现方法是利用python的sort算法是稳定排序,对数据进行多 ...
随机推荐
- 可以打开QQ,但打不开网页的DNS服务器设置问题
方法二: IE->设置->连接->局域网设置
- Sring容器的懒加载lazy-init设置
默认情况下,spring的IOC容器中lazy-init是false的,即没有打开懒加载模式. 如果你没有看到这个lazy-init 的参数设置就说明是false啦. 那么什么是懒加载? 懒加载--- ...
- 如何高效利用github提升自己
作为开源代码库以及版本控制系统,Github拥有超过900万开发者用户,是开发者打开程序开源大门的一扇窗口,也是开发者快速提升自己的一个重要途径.本文将从两个方面介绍github的使用方式. 和逛微博 ...
- Android 使用handler实现线程间发送消息 (主线程 与 子线程之间)、(子线程 与 子线程之间)
keyword:Android 使用handler实现线程间发送消息 (主线程 与 子线程之间).(子线程 与 子线程之间) 相信大家平时都有使用到异步线程往主线程(UI线程)发送消息的情况. 本文主 ...
- SQL SERVER 存储过程示例
USE TEST_DEV; SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ================================== ...
- 用lua nginx module搭建一个二维码
用lua nginx module搭建一个二维码(qr code)生成器 作者 vinoca 發布於 2014年10月31日 如果有VPS,或者开源的路由器,安装一个nginx,添加lua-nginx ...
- Pycharm上python unittest不执行"if __name__ == '__main__' "问题or选择非unittest run
转:http://www.cnblogs.com/csjd/p/6366535.html python unittest不执行"if __name__ == '__main__' " ...
- linux跨主机复制文件
scp -r billing@10.200.171.111:/billdata2/user/yanhm/redis/* /newboss/billing/user/aabb 其中: 10.200.17 ...
- iOS一些基础面试题
Part One 别人问你你都感觉这尼玛说啥的基础面试题 1.UIWindow和UIView和 CALayer 的联系和区别? 答:UIView是视图的基类,UIViewController是视图控制 ...
- 本地调试远程api tag
当你在本地开发js且需要跨域调用远程接口的时候.可按照下列步骤设置你的chrome. 1.创建chrome快捷方式. 2.右键属性新的快捷方式,在目标一栏后面追加 "--args ...