必威体育Betway必威体育官网
当前位置:首页 > IT技术

oracle 数据库中order by 的一些高级用法

时间:2019-06-17 21:44:13来源:IT技术作者:seo实验室小编阅读:84次「手机版」
 

order

oracle数据库中order by用法

oracle数据库中order by的一些高级用法

现有一个表,表内容如下:

这里写图片描述

以下的操作都是对该表进行的操作

1.按照名称排序(默认为升序)
  • 实现代码:
select * from dp_tourist order by cnname;
  • 实现效果:

    这里写图片描述

2.按照名称升序排序
  • 实现代码:
select * from dp_tourist order by  cnname asc;
  • 实现效果:

    这里写图片描述

3.按照名称降序排序
  • 实现代码:
select * from dp_tourist order by  cnname asc;
  • 实现效果:

    这里写图片描述

4.先按照名称降序排序,如果名称有一样的,则按照id降序排序
  • 实现代码:
select * from dp_tourist order by  cnname desc,id desc;
  • 实现效果:

    这里写图片描述

5.缺省处理:oracle在order by时认为null是最大值, 所以如果是asc升序则排在最后, desc降序则排在最前.我们可以使用nulls first或者nulls last来控制null的位置
5.1将null放在最前
  • 实现代码:
select * from dp_tourist order by cnname asc nulls first;
  • 实现效果:

    这里写图片描述

5.2将null放在最后
  • 实现代码:
select * from dp_tourist order by cnname desc nulls last;
  • 实现效果:

    这里写图片描述

6.名称有带“深圳”的先显示,其余的按照名称升序排序
6.1方法一:
  • 实现代码:
select * from dp_tourist d1 where d1.cnname like '%深圳%'
Union all
select * from (select * from dp_tourist d2 where d2.cnname not like '%深圳%' order by d2.CNNAME asc);
  • 实现效果:

    这里写图片描述

6.2方法二:
  • 实现代码:
select * from dp_tourist 
order by 
case
  when cnname like '%深圳%' then 0
  else  1
end,cnname asc;
  • 实现效果:

    这里写图片描述

  • 比较: 方法1中,null值不存在,方法2中,null值存在
7.按照id为94的排到第一位
  • 实现代码:
select * from dp_tourist order by decode(id, 94,4); 
  • 实现效果:

    这里写图片描述

8.按照id为94的排到第一位,其余按照id降序排序
  • 实现代码:
select * from dp_tourist order by decode(id, 94,4), id desc; 
  • 实现效果:

    这里写图片描述

9.把id当成分数,按照分数等级排序
  • DECODE函数的语法:DECODE(value,if1,then1,if2,then2,if3,then3,…,else);
  • DECODE函数说明:表示如果value等于if1时,DECODE函数的结果返回then1,…,如果不等于任何一个if值,则返回else。
  • sign函数语法:sign(n);
  • sign函数说明:取数字n的符号,大于0返回1,小于0返回-1,等于0返回0(n可以是表达式,(n-200))。
  • 实现代码:
select id 评分,cnname 名称, decode(sign(id-85),1,'优秀',0,'优秀',-1, 
decode(sign(id-70),1,'良好',0,'良好',-1, 
decode(sign(id-60),1,'及格',0,'及格',-1,'不及格'))) 成绩
from dp_tourist
order by 
case
  when 成绩='优秀' then 0
  when 成绩='良好' then 1
  when 成绩='及格' then 2
  when 成绩='不及格' then 3
  else  4
end,id asc;
  • 实现效果:

    这里写图片描述

以上就是我对oracle数据中,order by的一些使用方法的整理,这些方法可以让sql中的数据很好的排序,如果我有发现其他的关于排序的方法,我会补充进来。文件下载:https://download.csdn.net/download/tian_tian2/10501987。至于SQLSERVER数据库关于order by的方法,这里也有介绍:https://blog.csdn.net/tian_tian2/article/details/80815475

相关阅读

document中的write用法

一、document.write()运行原理 首先我们先了解一下这条语句运行的原理:     document.write()是Javascript中对document.open(

C语言中strcat()函数和strcpy()函数的用法

1 strcpy原型声明:extern char *strcpy(char* dest, const char *src);头文件:#include <string.h>功能:把从src地址开始且含有NULL

android 用到的Java反射之Field用法

在Java反射中Field用于获取某个类的属性或该属性的属性值一:如何通过Field反射获取类的属性Field提供如下几种方法:1:Class.getDecl

c语言strcpy()用法

c语言strcpy()用法 strcpy,即string copy(字符串复制)的缩写。strcpy是一种C语言的标准库函数,strcpy把从src地址开始且含有’\0’结

关于Toast.makeText()用法的简单说明

正如这段代码:Toast.makeText(this, "You clicked Add", Toast.LENGTH_SHORT).show();Toast的用法很简单,通过静态方法makeText()创

分享到:

栏目导航

推荐阅读

热门阅读