一般来说,我们在开发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查询结果按照指定内容排序相关推荐

  1. SQL查询单表数据之排序(二)

    [SQL从一点一滴分析系列文章]为实际开发中的点点滴滴的总结,从最最简单的SQL 查询 到 综合分析查询 在分析 SQL 时,也会同时分析 mybatis .Hibernate 中的相关操作 点击查看 ...

  2. SQL查询实现,记录排序编号

    对数据表的查询实现(股票涨幅SQL查询),数据库记录排序编号,按照顺序计算相邻两行数据的相关属性值: set @count = 0; set @count1 = 0; select b.Date, c ...

  3. SQL查询语句基础构成

    本文是基本的SQL查询语句用法,内容主要来自Alan Learning SQL这本书第3章,包括select,from,where,group by,having,order by六个查询子句,后续会 ...

  4. sql \n 查询_探索SQL查询提示选项(快速N)

    sql \n 查询 In this article, we will introduce SQL queries hint and will analyze the OPTION(Fast 'N') ...

  5. mysql统计数量函数方法_mySql关于统计数量的SQL查询操作

    mySql关于统计数量的SQL查询操作,状态,订单,语句,函数,数量 mySql关于统计数量的SQL查询操作 易采站长站,站长之家为您整理了mySql关于统计数量的SQL查询操作的相关内容. 我就废话 ...

  6. SQL Server数据库查询区分大小写、全半角——排序规则的应用(转载)

    SQL Server数据库查询区分大小写.全半角--排序规则的应用 因为偶然的原因,需要在INNER JOIN联表时,让对应字段进行区分大小写的比较.而默认情况下建立的Sql Server数据库是不区 ...

  7. 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.查询语 ...

  8. Spark-sql:以编程方式执行Spark SQL查询(通过反射的方式推断出Schema,通过StrutType直接指定Schema)

    1.编写Spark SQL查询语句 在这之前创建Maven项目.创建的过程如:http://blog.csdn.net/tototuzuoquan/article/details/74571374 在 ...

  9. oracle查询表字段横向排序,sql 查询 - 横着走的螃蟹 - OSCHINA - 中文开源技术交流社区...

    查询原则:列看成变量,where后面看成表达式 1.常用函数: max求最大,select max(shop_price) from goods; min求最小 sum求总和,select sum(g ...

最新文章

  1. Linux_指令杂烩
  2. MySQL高级 - 锁 - InnoDB行锁 - 争用情况查看
  3. Ubuntu 中设置源的几种方法
  4. python多线程之线程锁(Lock)和递归锁(RLock)实例
  5. mysql 启动报错-server PID file could not be found
  6. Mysql表的过滤查询
  7. Python如何实现简单DNF脚本
  8. http下载文件(常用方式+支持在线打开方式)
  9. SylixOS --- RMS调度详解
  10. 计算机桌面弹窗,网站弹窗广告:教你4种方法,永久关闭电脑弹窗广告,还你一个干净的桌面 _ 惠州SEO...
  11. 51系列单片机寻址方式
  12. 3dmax捕捉的基本操作2
  13. 飞鱼星方案助山东小城印象实现微信营销
  14. 央行紧急通知:你在用的这种支付方式将有重大变化
  15. CorelDRAW2022体验标准版
  16. 面向对象编程(OOP)
  17. 软件包应用分享|基于RT-Thread的百度语音识别(二)
  18. 聊聊机器人学习中的“投资”与“消费”(节选)
  19. 纯度高达98%以上的小分子PEG试剂,DSPE-PEG5-Mal
  20. 我在新浪的微博: http://blog.sina.com.cn/wenxy1

热门文章

  1. Reflex WMS入门系列二十五:将叉车纳入系统进行管理
  2. 八问程序员-----总有一个适合你
  3. 使用Google Analytics来统计网站流量
  4. asp基础入门(上)
  5. 路由器wifi密码设置
  6. html标签可以分为什么标签和什么标签,什么是HTML标签?HTML标签有什么作用?
  7. JAVA学习笔记—IO流
  8. 计通网实验的准备工作(C语言实现)
  9. 谷歌浏览器ajax异常,谷歌浏览器 jquery ajax
  10. Virtualbox源码分析20 NEM(Hyper-V兼容)1 Hyper-V架构和API介绍