通过对数据库数据进行降序排序来达到显示最新数据在前面的效果

-- 降序排序(最新的显示在前面)
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 distinctgroup 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)的更多相关文章

  1. oracle常用SQL语句(汇总版)

    Oracle数据库常用sql语句 ORACLE 常用的SQL语法和数据对象一.数据控制语句 (DML) 部分 1.INSERT (往数据表里插入记录的语句) INSERT INTO 表名(字段名1, ...

  2. Oracle和SQL语句的优化策略(基础篇)

    转载自: http://blog.csdn.net/houpengfei111/article/details/9245337 http://blog.csdn.net/uniqed/article/ ...

  3. oracle 常用sql语句

    oracle 常用sql语句 1.查看表空间的名称及大小 select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_sizefrom d ...

  4. SQL语句分组排序,多表关联排序

    SQL语句分组排序,多表关联排序总结几种常见的方法: 案例一: 在查询结果中按人数降序排列,若人数相同,则按课程号升序排列? 分析:单个表内的多个字段排序,一般可以直接用逗号分割实现. select ...

  5. oracle之sql语句优化

    oracle之sql语句优化 sql语句的优化 1.在where子句中使用 is null 或 is not null 时,oracle优化器就不能使用索引了. 2.对于有连接的列,即使最有一个是静态 ...

  6. oracle中sql语句的优化

    oracle中sql语句的优化 一.执行顺序及优化细则 1.表名顺序优化 (1) 基础表放下面,当两表进行关联时数据量少的表的表名放右边表或视图: Student_info   (30000条数据)D ...

  7. 查看oracle的sql语句历史记录和锁表的情况

    查看oracle的sql语句历史记录和锁表的情况 (2012-01-04 20:59:59) 转载▼ 标签: 杂谈 分类: database 查询sql的历史记录 select * from v$sq ...

  8. Oracle常用SQL语句大全

    常用Oracle数据库SQL语句汇总. 1.常用操作 --清空回收站purge recyclebin;--查询回收站select * from recyclebin--查询Oracle版本信息sele ...

  9. Oracle中SQL语句分类

    Oracle中SQL语句分类如下:1.DML语句 insert/delete/update/select/merge/explan plan/lock table2.DDL语句 create/atlt ...

  10. Access、SQLServer、Oracle常见SQL语句应用区别

    Access.SQLServer.Oracle常见SQL语句应用区别 关劲松 PMP 如果要兼容Access.SQL Server.Oracle三个数据库版本:我们在编写SQL语句的过程中,尽量使用一 ...

随机推荐

  1. [转载]——Automatic Tuning of Undo_retention Causes Space Problems (文档 ID 420525.1)

    Automatic Tuning of Undo_retention Causes Space Problems (文档 ID 420525.1) 转到底部 In this Document   Sy ...

  2. 使用layui框架 修改时部分参数未传给后台(查找原因)

    采用的结构: <form class="layui-form reset-form" action="" id="formData"& ...

  3. qt 自定义控件窗口提升

  4. HttpClient发起Http/Https请求工具类

    <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpcl ...

  5. hibernate opensission.createSQLquery 问题

    在进行分页查询的时候,通常会用到,页码,每页容量等等的参数进行操作,如下图: query.list()的时候会执行得到所需要的集合的值,在这个过程中, 如果使用自定义的返回参数,比如将日期做一些基本处 ...

  6. SA详细注释不压行代码

    ){ //变量含义:m是字符集大小,n是字符串长度,c是一个桶数组,a[i]是字符串(下标从1开始) //rk[i]就是suffix(i)的字典序排名,sa[i]就是要求的排名为i的后缀的起始位置,即 ...

  7. nginx如何实现负载均衡以及实现方式

    什么是ngnix? Nginx是一个http服务器.是一个使用c语言开发的高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器.nginx能够支撑5万并发链接,并且cpu ...

  8. Python 从入门到进阶之路(四)

    之前的文章我们简单介绍了一下 Python 的几种变量类型,本篇文章我们来看一下 Python 中的函数. 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性, ...

  9. Python 从入门到进阶之路(二)

    之前的文章我们对 Python 语法有了一个简单的认识,接下来我们对 Python 中的 if while for 做一下介绍. 上图为 if 判断语句的流程,无论任何语言,都会涉及到判断问题,if ...

  10. Java入门系列之类继承、抽象类、接口(五)

    前言 C#和Java关于类.抽象类.接口使用方式基本相似,只是对应关键字使用不同罢了,本节呢,我们只是对照C#和Java中关于这三个概念在具体使用时,看看有哪些不一样的地方. 类继承 C#和Java在 ...