【Oracle命令】sql语句之排序(order by)
通过对数据库数据进行降序排序来达到显示最新数据在前面的效果
-- 降序排序(最新的显示在前面)
SELECT * FROM 表名 t ORDER BY t.uploadDatetime DESC;
格式:
ORDER BY { column-Name | ColumnPosition | Expression }
[ ASC | DESC ]
[ NULLS FIRST | NULLS LAST ]
[ , column-Name | ColumnPosition | Expression
[ ASC | DESC ]
[ NULLS FIRST | NULLS LAST ]
] *
PS:默认为升序ASC
知识点:
order by后面可以接列号(数字)、列名、别名、表达式、函数、分组函数order by对空值的处理,DESC空值在前,ASC空值在后;order by子句中可以不含select中的列;- 当使用
select distinct或group by时,order by不能使用select之外的列; order by只能放最后,不能放集合操作的中间;- 集合操作后,不接
order by时按第一列进行升序排序(union all除外); - 集合操作后的列名为第一个
select的内容,order by只能选第一个select中的内容进行操作
select job, avg(sal) "Average Salary"
from emp
group by job
order by "Average Salary" DESC;
补充:
Union(union all): 指令的目的是将两个 SQL 语句的结果集合并起来,得到你所需要的查询结果。
Union:对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;
Union All:对两个结果集进行并集操作,包括重复行,不进行排序;
order by子句必须写在最后一个结果集里,并且其排序规则将改变操作后的排序结果。对于Union、Union All都有效。
实例:
1)按照名称排序(默认升序)、按照名称升序(ASC),按照名称降序(DESC),如果名称有相同的按照id降序排序(降序相当于显示最新的在前面)
-- 默认升序
SELECT * FROM t_test t ORDER BY t.content;
-- 按名称升序
SELECT * FROM t_test t ORDER BY t.content ASC;

-- 按名称降序
SELECT * FROM t_test t ORDER BY t.content DESC

-- 名称相同的按id降序(将最新的排序)。这里我新添加了一条数据test4
SELECT * FROM t_test t ORDER BY t.content DESC,t.id DESC;

2)缺省处理:oracle在order by时认为null是最大值, 所以如果是asc升序则排在最后, desc降序则排在最前.我们可以使用nulls first或者nulls last来控制null的位置。
-- 升序显示,默认null值在后面,使用nulls first将null显示在最前面
SELECT * FROM t_test t ORDER BY t.content ASC NULLS FIRST;
-- 降序显示,默认null值在前面,使用null last将null显示在最后面
SELECT * FROM t_test t ORDER BY t.content DESC NULLS FIRST;
mysql的如下:
-- null值显示在最前面
SELECT * FROM t_test t ORDER BY IF(ISNULL(t.content),0,1),t.content ASC;
-- null值显示在最后面
SELECT * FROM t_test t ORDER BY IF(ISNULL(t.content),1,0),t.content DESC;
3)将名称带有"test"的先显示,其余按照名称升序排序
在这里由于少了别名,出现报错,不过已解决
可以参考我的另一篇博客文章:https://www.cnblogs.com/HeiDi-BoKe/p/11763494.html
select * from t_test t1 where t1.content like '%test%'
Union all
select * from
(select * from t_test t2 where t2.content not like '%test%' order by t2.content asc) d;
上面的方法没有把null值显示出来。另一种方法也可实现,并显示null值
select * from t_test t
order by
case
when t.content like '%test%' then 0
else 1
end,t.content asc;

4)按照id为6的排到第一位,其余按照id降序排序
select * from t_test order by decode(id, 6,1), id desc;
PS:
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))。
参考网址:https://blog.csdn.net/tian_tian2/article/details/80816275
【Oracle命令】sql语句之排序(order by)的更多相关文章
- oracle常用SQL语句(汇总版)
Oracle数据库常用sql语句 ORACLE 常用的SQL语法和数据对象一.数据控制语句 (DML) 部分 1.INSERT (往数据表里插入记录的语句) INSERT INTO 表名(字段名1, ...
- Oracle和SQL语句的优化策略(基础篇)
转载自: http://blog.csdn.net/houpengfei111/article/details/9245337 http://blog.csdn.net/uniqed/article/ ...
- oracle 常用sql语句
oracle 常用sql语句 1.查看表空间的名称及大小 select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_sizefrom d ...
- SQL语句分组排序,多表关联排序
SQL语句分组排序,多表关联排序总结几种常见的方法: 案例一: 在查询结果中按人数降序排列,若人数相同,则按课程号升序排列? 分析:单个表内的多个字段排序,一般可以直接用逗号分割实现. select ...
- oracle之sql语句优化
oracle之sql语句优化 sql语句的优化 1.在where子句中使用 is null 或 is not null 时,oracle优化器就不能使用索引了. 2.对于有连接的列,即使最有一个是静态 ...
- oracle中sql语句的优化
oracle中sql语句的优化 一.执行顺序及优化细则 1.表名顺序优化 (1) 基础表放下面,当两表进行关联时数据量少的表的表名放右边表或视图: Student_info (30000条数据)D ...
- 查看oracle的sql语句历史记录和锁表的情况
查看oracle的sql语句历史记录和锁表的情况 (2012-01-04 20:59:59) 转载▼ 标签: 杂谈 分类: database 查询sql的历史记录 select * from v$sq ...
- Oracle常用SQL语句大全
常用Oracle数据库SQL语句汇总. 1.常用操作 --清空回收站purge recyclebin;--查询回收站select * from recyclebin--查询Oracle版本信息sele ...
- Oracle中SQL语句分类
Oracle中SQL语句分类如下:1.DML语句 insert/delete/update/select/merge/explan plan/lock table2.DDL语句 create/atlt ...
- Access、SQLServer、Oracle常见SQL语句应用区别
Access.SQLServer.Oracle常见SQL语句应用区别 关劲松 PMP 如果要兼容Access.SQL Server.Oracle三个数据库版本:我们在编写SQL语句的过程中,尽量使用一 ...
随机推荐
- 实训第六天(mybatis)
今天实训第六天,我们学习了mybatis这个数据库框架,虽然说框架的环境搭建非常的繁琐,但是在了解原理和流程之后是非常的舒服的.因为有一个强大的工具被我掌握了,所以今天感觉非常的开心. 首先我们是在s ...
- [PHP] RBAC权限与审批流的简单数据库构想
权限部分:功能权限+数据权限 控制权限是界面按钮菜单的权限控制,数据权限是数据范围的控制 role(角色) ----------------- |id | ----------------- |nam ...
- cookie、localStorage 和 sessionStorage 的使用以及区别
localStorage 和 sessionStorage 的增删改查: 存储数据: sessionStorage.setItem('key', 'sessionStorage的值'); // 存储数 ...
- 关于操作服务器上tomcat的常用linux指令
ll: 列出目录下的所有文件 cd:切换目录 pwd:显示目前的目录 grep xxxxxx catalina.out 查询文件中关于某个信息的内容 grep -3 xxxxxxca ...
- 【pat】C++之刷题常用STL容器整理
1.vector 动态数组,方便的动态扩容,方便的变量初始化(int类型默认初始化为0,bool默认初始化为false),可以用来实现邻接表(结点数太多的图). 头文件 #include<vec ...
- 了解Github
一.什么是Github Github是全球最大的社交编程及代码托管网站(https://github.com/). Github可以托管各种git库,并提供一个web界面(用户名.github.io/ ...
- 用Go写完Hello World,一些需要注意的地方
序言 Go可是说是近几年比较火的语言了,目前版本已经到了1.13,如果说有其他语言的基础,学习Go还是挺简单的.这篇文章主要是总结一些,和其他语言可能会不一样的地方. 多返回值 之前如果一个方法像返回 ...
- SpringBoot+MyBatisPlus整合时提示:Invalid bound statement(not found):**.dao.UserDao.queryById
场景 在使用SpringBoot+MyBatisPlus搭建后台启动项目时,使用EasyCode自动生成代码. 在访问后台接口时提示: Invilid bound statement (not fou ...
- Java SSM 商户管理系统 客户管理 库存管理 销售报表 项目源码
需求分析: 有个厂家,下面有很多代理商(商户或门头等),之前商户进货.库存.销售.客户资料等记录在excel表格中 或者无记录,管理比较混乱,盈利情况不明.不能有效了解店铺经营情况和客户跟踪记录 厂家 ...
- google跟踪代码管理器gtm无法给相同class元素绑定click事件埋点解决
Google 跟踪代码管理器是一个跟踪代码管理系统 (TMS),可以帮助您快速轻松地更新网站或移动应用上的跟踪代码及相关代码段(统称为“代码”).将一小段跟踪代码管理器代码添加到项目后,您可以通过网页 ...