SQL查询结果按照指定内容排序
一般来说,我们在开发SQL脚本的时候,遇到需要排序的内容,用order by需要排序的字段就可以满足我们排序的需求,asc为升序、desc为降序,不指定关键字默认为升序。但是有时候,我们需要的排序不仅仅是升序和降序,asc与desc并不能满足我们的排序需求,所以我们需要用到按照指定的内容进行排序的操作,下面我们就从MySQL与Oracle两个数据库来看一下具体的操作:
一、MySQL
1,函数FIELD
格式:order by FIELD(需要排序的字段,字段内容1,字段内容2,字段内容3)
示例:order by FIELD(office_name,'云南办','江苏办','山西办')
释义:数据结果按照office_name排序,指定顺序为'云南办','江苏办','山西办'
特殊情况说明:
(1)指定的排序内容为字段的所有内容
意思是office_name里面只包含’云南办’,‘江苏办’,‘山西办’,可以直接用下面语句进行排序
order by FIELD(office_name,'云南办','江苏办','山西办')
释义:查询结果排序内容为四川省、甘肃省、陕西省
示例:
SELECT DISTINCT office_code,office_name
FROM EC_ZB.ecorder_completion_rate_day
WHERE 1=1
AND office_name IN ('云南办','江苏办','山西办')
ORDER BY FIELD(office_name,'云南办','江苏办','山西办')
结果展示:
(2)指定的排序内容为字段的部分内容
意思是office_name里面不仅包含’云南办’,‘江苏办’,‘山西办’,还有别的内容,但是你只想把这三个省的内容放在最前面,那么你需要用下面的语句进行排序
order by FIELD(office_name,'山西办','江苏办','云南办') desc
释义:这样的排序内容为云南办、江苏办、山西办、其他省份数据
SELECT DISTINCT office_code,office_name
FROM EC_ZB.ecorder_completion_rate_day
WHERE 1=1
-- AND office_name IN ('云南办','江苏办','山西办')
ORDER BY FIELD(office_name,'山西办','江苏办','云南办') desc
结果展示:
如果使用order by FIELD(office_name,‘云南办’,‘江苏办’,‘山西办’) ,
排序内容为 其他省份,‘云南办’,‘江苏办’,‘山西办’
SELECT DISTINCT office_code,office_name
FROM EC_ZB.ecorder_completion_rate_day
WHERE 1=1
-- AND office_name IN ('云南办','江苏办','山西办')
ORDER BY FIELD(office_name,'云南办','江苏办','山西办')
结果展示:
2,函数locate
locate的用法和field很相似,只是locate是判断字符串的内容是否包含在指定的字符串里。下面是详细讲解
格式:locate(subStr,string)
释义:判断字符串(string)中是否包含另一个字符串(subStr),函数返回的是subStr在string中出现的位置
示例:ORDER BY LOCATE(office_name,'云南办,江苏办,山西办') SELECT DISTINCT office_code,office_name
FROM EC_ZB.ecorder_completion_rate_day
WHERE 1=1
AND office_name IN ('云南办','江苏办','山西办')
ORDER BY LOCATE(office_name,'云南办,江苏办,山西办')
结果展示
二、Oracle
在Oracle中,使用decode函数,就可以实现按照指定内容排序的功能,下面是详细的讲解。
格式:order by decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值)
示例:ORDER BY DECODE(agency_name,'云南独资办事处','1','江苏独资办事处','2','四川直营办事处','3')
释义:查询结果按照agency_name字段的云南独资办事处、江苏独资办事处、四川直营办事处排序
1,指定的内容为字段的全部内容
SQL例子:
SELECT DISTINCT AGENCY_CODE ,agency_name
FROM ecorder.ec_order
WHERE 1=1
AND AGENCY_CODE IS NOT NULL
AND agency_name IN ('云南独资办事处','江苏独资办事处','四川直营办事处')
ORDER BY DECODE(agency_name,'云南独资办事处','1','江苏独资办事处','2','四川直营办事处','3')
查询结果:
2,指定内容为字段的部分内容
Oracle的decode函数,和MySQL的field()函数还是有差别的,即便是你在排序的时候,指定的内容为字段的部分内容,也不会影响排序结果,首先按照指定内容排序,其他的放在指定内容的后面。
示例SQL:
SELECT DISTINCT AGENCY_CODE ,agency_name
FROM order.order
WHERE 1=1
AND AGENCY_CODE IS NOT NULL
ORDER BY DECODE(agency_name,'云南独资办事处','1','江苏独资办事处','2','四川直营办事处','3')
查询结果:
到这里,指定字段内容的排序就结束了,大家可以按照自己的需求以及目标数据库进行对应选择使用,希望可以给你带来思路和开发便利。
我是晓之以理的喵~,欢迎交流。
SQL查询结果按照指定内容排序相关推荐
- SQL查询单表数据之排序(二)
[SQL从一点一滴分析系列文章]为实际开发中的点点滴滴的总结,从最最简单的SQL 查询 到 综合分析查询 在分析 SQL 时,也会同时分析 mybatis .Hibernate 中的相关操作 点击查看 ...
- SQL查询实现,记录排序编号
对数据表的查询实现(股票涨幅SQL查询),数据库记录排序编号,按照顺序计算相邻两行数据的相关属性值: set @count = 0; set @count1 = 0; select b.Date, c ...
- SQL查询语句基础构成
本文是基本的SQL查询语句用法,内容主要来自Alan Learning SQL这本书第3章,包括select,from,where,group by,having,order by六个查询子句,后续会 ...
- sql \n 查询_探索SQL查询提示选项(快速N)
sql \n 查询 In this article, we will introduce SQL queries hint and will analyze the OPTION(Fast 'N') ...
- mysql统计数量函数方法_mySql关于统计数量的SQL查询操作
mySql关于统计数量的SQL查询操作,状态,订单,语句,函数,数量 mySql关于统计数量的SQL查询操作 易采站长站,站长之家为您整理了mySql关于统计数量的SQL查询操作的相关内容. 我就废话 ...
- SQL Server数据库查询区分大小写、全半角——排序规则的应用(转载)
SQL Server数据库查询区分大小写.全半角--排序规则的应用 因为偶然的原因,需要在INNER JOIN联表时,让对应字段进行区分大小写的比较.而默认情况下建立的Sql Server数据库是不区 ...
- 1.19.7.Table API、SQL、数据类型、保留关键字、查询语句、指定查询、执行查询、语法、操作符、无排名输出优化、去重、分组窗口、时间属性、选择分组窗口的开始和结束时间戳、模式匹配
1.19.7.Table API 1.19.8.SQL 1.19.8.1.概述 1.19.8.1.1.SQL 1.19.8.1.2.数据类型 1.19.8.1.3.保留关键字 1.19.8.2.查询语 ...
- Spark-sql:以编程方式执行Spark SQL查询(通过反射的方式推断出Schema,通过StrutType直接指定Schema)
1.编写Spark SQL查询语句 在这之前创建Maven项目.创建的过程如:http://blog.csdn.net/tototuzuoquan/article/details/74571374 在 ...
- oracle查询表字段横向排序,sql 查询 - 横着走的螃蟹 - OSCHINA - 中文开源技术交流社区...
查询原则:列看成变量,where后面看成表达式 1.常用函数: max求最大,select max(shop_price) from goods; min求最小 sum求总和,select sum(g ...
最新文章
- Linux_指令杂烩
- MySQL高级 - 锁 - InnoDB行锁 - 争用情况查看
- Ubuntu 中设置源的几种方法
- python多线程之线程锁(Lock)和递归锁(RLock)实例
- mysql 启动报错-server PID file could not be found
- Mysql表的过滤查询
- Python如何实现简单DNF脚本
- http下载文件(常用方式+支持在线打开方式)
- SylixOS --- RMS调度详解
- 计算机桌面弹窗,网站弹窗广告:教你4种方法,永久关闭电脑弹窗广告,还你一个干净的桌面 _ 惠州SEO...
- 51系列单片机寻址方式
- 3dmax捕捉的基本操作2
- 飞鱼星方案助山东小城印象实现微信营销
- 央行紧急通知:你在用的这种支付方式将有重大变化
- CorelDRAW2022体验标准版
- 面向对象编程(OOP)
- 软件包应用分享|基于RT-Thread的百度语音识别(二)
- 聊聊机器人学习中的“投资”与“消费”(节选)
- 纯度高达98%以上的小分子PEG试剂,DSPE-PEG5-Mal
- 我在新浪的微博: http://blog.sina.com.cn/wenxy1