`
marc0658
  • 浏览: 80375 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

oracle order by

 
阅读更多

转载自: http://blog.csdn.net/wh62592855/article/details/4813404 


1、ORDER BY 中关于NULL的处理

缺省处理,Oracle在Order by 时认为null是最大值,所以如果是ASC升序则排在最后,DESC降序则排在最前。

当然,你也可以使用nulls first 或者nulls last 语法来控制NULL的位置。
Nulls first和nulls last是Oracle Order by支持的语法
如果Order by 中指定了表达式Nulls first则表示null值的记录将排在最前(不管是asc 还是 desc)
如果Order by 中指定了表达式Nulls last则表示null值的记录将排在最后 (不管是asc 还是 desc)
使用语法如下:
--将nulls始终放在最前
select * from zl_cbqc order by cb_ld nulls first
--将nulls始终放在最后
select * from zl_cbqc order by cb_ld desc nulls last

 

2、几种排序的写法
单列升序:select<column_name> from <table_name> order by <column_name>; (默认升序,即使不写ASC)

单列降序:select <column_name> from <table_name> order by <column_name> desc; 
多列升序:select <column_one>, <column_two> from <table_name> order by <column_one>, <column_two>; 
多列降序:select <column_one>, <column_two> from <table_name> order by <column_one> desc, <column_two> desc; 
多列混合排序:select <column_one>, <column_two> from <table_name> order by <column_one> desc, <column_two> asc;

3、今天看到的新写法

SQL> select * from tb; 

    BLOGID BLOGCLASS 
---------- ------------------------------ 
        1 人生 
        2 学习 
        3 工作 
        5 朋友 

SQL> select * from tb order by decode(blogid,3,1,2), blogid; 

    BLOGID BLOGCLASS 
---------- ------------------------------ 
        3 工作 
        1 人生 
        2 学习 
        5 朋友

 

我所说的就是上面红色的那句话。实现的功能就是不管怎样,BLOGID为3的值必须排在第一位,其他的记录按照BLOGID升序排序。

shiyiwan同学给我的解释是这样的:“默认升序排序,blogid = 3时返回1,其他则返回2, 所以blogid = 3的记录排在最前啊。”

wildwave同学也给了个说法:“你将那个decode理解成前面select后面的列,按照那一列排序就好了。”

 

我又去试了一条语句,结果如下

SQL>  select * from tb order by decode(blogid,3,1,2);

    BLOGID BLOGCLASS
---------- ------------------------------
         3 工作
         5 朋友
         1 人生
         2 学习

 

我现在的理解是这样的,通过decode()函数,BLOGID值为3的那条记录被转换为了1,而其他的记录都是2,那么按照这个顺序排序,肯定BLOGID为3的那条记录永远在最前面了,不仅如此,注意到后面还加了个按BLOGID默认升序排列,这也就是说对于那些被DECODE转换为2的记录来说,按照它们的BLOGID升序排序。

分享到:
评论

相关推荐

    Oracle数据库中ORDER BY排序和查询按IN条件的顺序输出

    本文将深入探讨`ORDER BY`子句在Oracle中的排序机制,以及查询时根据`IN`条件顺序输出的方法。 首先,`ORDER BY`用于指定查询结果的排序方式,可以基于一个或多个列进行升序(ASC)或降序(DESC)排序。然而,...

    oracle使用order by排序null值如何处理

    大–&gt;小&gt;,null值排在最前面) 指定: 1.Oracle Order by支持的语法 2.指定Nulls first 则表示null值的记录将排在最前(不管是asc 还是desc) 3.指定Nulls last 则表示null值的记录将排在最后(不管是asc 还是desc) ...

    union all与order by用法

    在 Oracle PL/SQL 中, UNION ALL 和 ORDER BY 的使用需要遵循一定的规则和限制。本文将详细介绍 UNION ALL 和 ORDER BY 的用法,并通过实例解释其应用场景。 UNION ALL 的用法 UNION ALL 用于合并两个或多个 ...

    oracle-sort-order-by.rar_oracle_sort - order

    在Oracle数据库中,排序(Sort)是SQL查询中不可或缺的一部分,`ORDER BY`子句用于决定查询结果的显示顺序。本篇文章将深入探讨Oracle数据库的日文排序机制,这对于在日本进行外包软件开发的工程师来说尤其重要。 ...

    Oracle数据库系统性能优化策略

    一个数据库系统的生命周期可以分成设计、开发和成品三个阶段。在设 计阶段进行数据库性能优化的成本最低,收益最大。在成品阶段进行数据库 性能优化的成本最高,收益最小。数据库的优化可以通过对网络、硬件、操 ...

    09.Oracle的order by关键字1

    在 Oracle 数据库中,`ORDER BY` 是一个重要的 SQL 关键字,用于对查询结果集进行排序。在本文中,我们将深入理解 `ORDER BY` 的使用方法,并通过具体示例来展示其功能。 首先,我们需要了解如何创建和填充数据表。...

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

    oracle数据库中order by的一些高级用法,该文件中,从order by的基本应用到order by的高级运用,该文件中均有体现

    Oracle EBS R12 Order Management_TRAIN

    By understanding these key points and processes, users can effectively utilize Oracle EBS R12 Order Management to optimize their order-to-cash lifecycle, enhance customer satisfaction, and improve ...

    oracle connect by level 应用

    在实际应用中,`CONNECT BY`可以与其他SQL功能结合使用,如`WHERE`子句筛选特定层级、`ORDER BY`控制输出顺序,甚至与PL/SQL一起构建复杂的业务逻辑。熟练掌握`CONNECT BY`和`LEVEL`,能够让你在处理层级数据时...

    Oracle查询中OVER (PARTITION BY ..)用法

    Oracle查询中的`OVER (PARTITION BY ..)`是一个窗口函数,它允许我们在数据集上执行计算,但不是在整个结果集上,而是针对每个分区。这部分功能非常强大,可以用于复杂的分析和排序任务,尤其是在处理分组数据时。在...

    数据库查询排序使用随机排序结果示例(Oracle/MySQL/MS SQL Server)

    Oracle查询结果集,随机排序 代码如下:select * from table1 order by dbms_random.value(); MySQL随机查询出一条记录: 代码如下: — 下面的查询语句效率高,不要使用 SELECT * FROM table1 ORDER BY rand() LIMIT ...

    解决Oracle分页查询中排序与效率问题

    ORDER BY t.ID; ``` 该查询首先从`tZDYSX`表中选取数据,并通过连接`tuser`和`lborganization`表来获取更多的信息。接着按照`t.ID`字段进行排序。但此查询并没有实现分页功能。 为了实现分页,我们可以采用以下两...

    Oracle的CLOB大数据字段类型操作方法

    Oracle数据库在处理大数据字段时,提供了CLOB(Character Large Object)类型,用于存储大量文本数据。CLOB类型是LOB家族的一员,与BLOB(Binary Large Object)不同,它专门用于存储字符集相关的数据,比如文档、...

    Oracle多行记录合并

    SELECT customer_id, LISTAGG(order_item, ', ') WITHIN GROUP (ORDER BY order_item) AS items FROM orders GROUP BY customer_id; ``` 2. **集合操作:** - **`UNION ALL` 或 `UNION`:** 虽然这不是直接的...

    order_by_、group_by_、having的用法

    在SQL查询中,`order_by_`、`group_by_`和`having`是三个非常重要的关键字,它们分别用于不同的数据处理操作。 1. `ORDER BY`:此关键字用于对查询结果进行排序,默认是升序(ASC),也可以指定降序(DESC)。在`...

    关于mysql和oracle子查询order by 的问题

    select * from (select * from tmpwp order by aa ) as t; insert into tmpwp(aa) VALUES(2); insert into tmpwp(aa) VALUES(67); insert into tmpwp(aa) VALUES(5); insert into tmpwp(aa) VALUES(234); 这个时候...

    关于Oracle数据库优化的几点总结

    Oracle数据库优化是一个复杂而重要的议题,它涉及到多个层面,包括物理优化和逻辑优化。物理优化主要关注数据库系统的基础架构和配置,而逻辑优化则侧重于应用程序的调整和SQL语句的优化。 首先,物理优化的关键...

    Oracle实验一sql答案

    Oracle 实验一 SQL 答案详解 ...Oracle 实验一涵盖了基本表 EMP 和 DEPT 的操作,包括使用 BETWEEN 操作符、ORDER BY 子句和 LIKE 操作符等知识点。这些知识点对于深入学习 Oracle 数据库非常重要。

Global site tag (gtag.js) - Google Analytics