`

order by 用法

阅读更多
用order by排序时,默认空值放在最后面,但是如果是order by desc ,那么空值默认就是放在最前面:

ETL@RACTEST> select a,rowid from liutest order by a;

         A ROWID
---------- ------------------
         1 AAF0+EAD0AAAGntAAA
         2 AAF0+EAD0AAAGntAAB
           AAF0+EAD0AAAGntAAC

Elapsed: 00:00:00.03
ETL@RACTEST> select a,rowid from liutest order by a desc;

         A ROWID
---------- ------------------
           AAF0+EAD0AAAGntAAC
         2 AAF0+EAD0AAAGntAAB
         1 AAF0+EAD0AAAGntAAA

Elapsed: 00:00:00.01



    这是一个小问题,但是在现实应用中如果犯错那就是大问题!试想我要对注册资金(reg_capital)进行从大到小排序,那么如果order by reg_capital desc 中的reg_capital存在空值,那完全就不是按注册资金从大到小排序,是把没有注册资金的全部排在了最前面,这简直就是是非颠倒,黑白不分!

    因此当用order by desc排序时,一定要注意看有没有空值,否则就会产生“想找最好的却找了最差的,想找最多的却找了最少的”这样的效果!

    解决这类问题有两个方法,根据具体需要而定。

1.对空值进行转换处理,例如转换成0

2.排序时使用nulls last关键字,如

ETL@RACTEST> select a,rowid from liutest order by a desc nulls last;

         A ROWID
---------- ------------------
         2 AAF0+EAD0AAAGntAAB
         1 AAF0+EAD0AAAGntAAA
           AAF0+EAD0AAAGntAAC

Elapsed: 00:00:00.01


来自 http://blog.sina.com.cn/s/blog_6ff05a2c0100o424.html
分享到:
评论

相关推荐

    union all与order by用法

    ORDER BY 用于对查询结果进行排序,使用方法是在 SELECT 语句后添加 ORDER BY 子句,例如: ```sql SELECT * FROM t ORDER BY status; ``` 在上面的示例中,我们使用 ORDER BY 对表 t 的结果集进行排序,按照 status...

    group by + order by

    ### Group By 和 Order By 的使用方法及组合应用 在数据库查询语言 SQL(Structured Query Language)中,`GROUP BY` 和 `ORDER BY` 是两个非常重要的子句,它们可以帮助我们更高效地管理和展示数据。 #### GROUP ...

    order by 、group by 、having的用法

    总的来说,`ORDER BY`、`GROUP BY` 和 `HAVING` 是SQL中进行数据组织和分析的关键工具,掌握它们的用法对于高效地处理大数据至关重要。正确地运用这些子句可以帮助我们更好地理解和分析数据,从而做出更明智的决策。

    MySQL中union和order by同时使用的实现方法

    MySQL中union和order by是可以一起使用的,但是在使用中需要注意一些小问题,下面通过例子来说明。首先看下面的t1表。 1、如果直接用如下sql语句是会报错:Incorrect usage of UNION and ORDER BY。 SELECT * FROM ...

    C# linq查询之动态OrderBy用法实例

    总结起来,C# LINQ的动态OrderBy用法提供了在运行时根据变量决定排序方式和属性的强大能力。这种灵活性使得在处理不确定的排序需求时更加便捷,尤其是在数据驱动的应用场景中,例如动态生成报表或用户自定义排序等。...

    MySQL Order By用法分享

    本篇文章将通过具体的实例,深入讲解`ORDER BY`的用法。 首先,我们需要创建一个名为`mysql_order_by_test`的数据表,它包含以下字段: 1. `uid`:整型,非空,自动递增。 2. `name`:字符型,最大长度为80,非空。...

    MyBatisPlus条件构造器带条件排序方法orderBy、orderByDesc、orderByAsc使用示例代码

    在实际开发中,我们经常需要对查询结果进行排序,MyBatisPlus为此提供了`orderBy`、`orderByDesc`和`orderByAsc`三个方法,方便我们实现条件排序。下面将详细介绍这三个方法的使用及原理。 `orderBy`方法是...

    C# IQueryable 的动态添加 OrderBy

    自动添加 OrderBy 或者 ThenBy,只要一直调用 OrderIf 扩展函数就行。 扩展函数中将自动判断 传入的 IQueryable 是否有调用过 OrderBy 函数。

    C# List OrderBy 动态多字段排序

    本篇文章将深入探讨如何在C#中使用`OrderBy`方法进行动态多字段排序。 首先,了解`OrderBy`的基本用法。`OrderBy`方法接收一个委托作为参数,这个委托定义了排序的规则。在单字段排序中,我们通常使用Lambda表达式...

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

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

    为什么SQL不许在视图定义ORDER BY子句

    尽管如此,SQL Server提供了一种变通方法,允许在某些情况下在视图中使用`ORDER BY`,即结合`TOP`关键字。例如,在创建视图时,你可以使用`TOP`来限制返回的行数,并同时指定排序顺序,就像在示例中那样: ```sql ...

    order_by_、group_by_、having的用法区别

    order_by_、group_by_、having的用法区别

    php自定义二维数组排序函数array_orderby用法示例

    下面详细讲解`array_orderby()`函数的用法: ```php function array_orderby() { $args = func_get_args(); $data = array_shift($args); // 遍历参数,提取字段名和排序方式 foreach ($args as $n => $field...

    Linq OrderBy

    `OrderBy` 和 `SortBy` 方法是用于对序列进行升序排序的关键操作。 首先,我们来理解 `OrderBy` 方法。`OrderBy` 是 LINQ 的标准查询运算符之一,它允许你在查询时对数据进行排序。例如,如果你有一个包含人名的...

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

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

    Like-and-OrderBy.rar_sql like order by

    当你在查询中同时使用LIKE和ORDER BY时,LIKE通常是用于筛选数据,而ORDER BY则是为了确定返回结果的顺序。例如,如果你只关心以"J"开头且按名字降序排列的客户: ```sql SELECT * FROM Customers WHERE Name LIKE ...

    order_by_、group_by_、having的用法区别.doc

    ### SQL中的ORDER BY, GROUP BY, HAVING 的用法区别详解 #### 一、概述 在SQL查询语言中,`ORDER BY`, `GROUP BY`, 和 `HAVING` 是三个非常重要的概念,它们分别用于对查询结果进行排序、分组以及在分组后进一步...

Global site tag (gtag.js) - Google Analytics