• 技术文章 >数据库 >Oracle

    oracle怎么将查询结果进行排序

    青灯夜游青灯夜游2022-01-13 11:33:43原创187

    在oracle中,可以使用“SELECT”语句和“ORDER BY”子句来进行查询排序,可按升序或降序对一列或多列的查询结果集进行排序,语法“SELECT 字段名 FROM 数据表名 ORDER BY 字段名 [ASC|DESC]”。

    本教程操作环境:Windows7系统、Oracle 11g版、Dell G3电脑。

    在oracle中,可以使用“SELECT”语句和“ORDER BY”子句来进行查询排序。

    在Oracle中,表中是以非指定顺序存储行数据记录的,它不管行插入数据库的顺序如何。要按列以升序或降序查询行记录,必须明确指示Oracle数据库要如何去排序。

    例如,您可能希望按名称的字母顺序列出所有客户,或者按照从最低到最高信用限额的顺序显示所有客户。

    要对查询的数据进行排序,请按如下方式将ORDER BY子句添加到SELECT语句中。

    ORDER BY子句可以按升序或降序对一列或多列的结果集进行排序。

    语法:

    SELECT
        字段名,
    FROM
        table_name
    ORDER BY
        字段名 [ASC | DESC] [NULLS FIRST | NULLS LAST]

    要按列排序结果集,可以在ORDER BY子句之后列出该列。

    按照列名是一个排序顺序,可以是:

    默认情况下,无论是否指定ASCORDER BY子句都按升序对行进行排序。如果要按降序对行进行排序,请明确使用DESC

    NULLS FIRST在非NULL值之前放置NULL值,NULLS LAST在非NULL值之后放置NULL值。

    ORDER BY子句可以按多列对数据进行排序,每列可能有不同的排序顺序。

    请注意,ORDER BY子句总是SELECT语句中的最后一个子句。

    Oracle ORDER BY子句的例子

    下面将使用示例数据库中的customers表进行演示。

    1.png

    以下语句从客户(customers)表中检索客户的:name, addresscredit limit

    SELECT name, address, credit_limit FROM customers;

    执行上面查询语句,得到以下结果 -

    2.png

    正如截图中所看到的,行记录的顺序是未指定的。

    1、按列排序行示例

    要按照字母顺序按升序排列客户名称,请使用以下语句:

    SELECT name,address,credit_limit
    FROM customers
    ORDER BY name ASC;

    执行上面示例代码,得到以下结果 -

    3.png

    ASC指示Oracle按升序对行进行排序。但是ASC是可选的,如果省略,则在默认情况下,ORDER BY子句按指定的列按升序对行进行排序。

    因此,下面的表达式:

    ORDER BY name ASC

    等效于 -

    ORDER BY name

    要按字母顺序降序排列客户名称,请在ORDER BY子句中的列名之后显式使用DESC,如下所示:

    SELECT name, address, credit_limit
    FROM customers
    ORDER BY name DESC;

    执行上面查询语句,得到以下结果 -

    4.png

    2、按多个列排序行示例

    要对多列进行排序,可以用逗号分隔ORDER BY子句中的每列。

    请参阅示例数据库中的以下联系人(contacts)表。

    例如,要按first_name进行按升序排序,并按降序对last_name列进行排序,请使用以下语句:

    SELECT first_name, last_name
    FROM contacts
    ORDER BY first_name, last_name DESC;

    执行上面示例代码,可以看到如下结果 -

    5.png

    从上面截图中可以看到,contact_id91311这两条记录的first_name的值相同,last_name的值是以降序来排列的。

    在这个例子中,Oracle首先按first_name升序对行进行排序,以创建初始结果集。 然后Oracle按降序对last_name排序初始结果集。

    看到类似下面的结果如下:

    6.png

    在上面的这个结果中:

    3、按列位置排序行示例

    不需要指定用于排序数据的列名称。如果您愿意,可以使用ORDER BY子句中列的位置。

    请参考下语句 -

    SELECT name, credit_limit,address
    FROM customers
    ORDER BY 2 DESC, 1;

    在这个例子中,name列的位置是1credit_limit列的位置是2。相当于以下查询语句 -

    SELECT name, credit_limit,address
    FROM customers
    ORDER BY credit_limit DESC, name;

    ORDER BY子句中,使用这些列位置来指示Oracle对行进行排序。

    4、用NULL值排序行的示例

    请参阅示例数据库中的以下地区(locations)表:

    7.png

    以下语句按城市(city)和州(state)检索位置并对其进行排序:

    SELECT country_id, city, state
    FROM locations 
    ORDER BY state DESC;

    执行上面查询语句,得到以下结果 -

    8.png

    state列有NULL值,这意味着state数据与某些城市(例如:Beijing, HiroshimaLondon)无关。

    当使用非NULL值对混合NULL进行排序时,Oracle允许指定哪个应该首先出现。

    例如,以下语句按升序对state列进行排序,并首先将NULL值放置在前面。

    SELECT country_id, city, state
    FROM
        locations
    ORDER BY
        state ASC NULLS FIRST;

    要放置NULL值在后面,可以使用NULLS LAST,如下面的语句所示:

    SELECT country_id, city, state
    FROM
        locations
    ORDER BY
        state ASC NULLS LAST;

    执行上面示例查询语句,得到以下结果:

    9.png

    5、按函数或表达式排序数据

    ORDER BY子句可在一列上应用一个函数,例如字符串函数,数学函数等,并按函数的结果对数据进行排序。

    例如,以下语句使用ORDER BY子句中的UPPER()函数来区分客户名称的大小写:

    SELECT customer_id, name
    FROM customers
    ORDER BY UPPER( name );

    执行上面查询语句,得到以下结果 -

    10.png

    推荐教程:《Oracle教程

    以上就是oracle怎么将查询结果进行排序的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:oracle 查询排序
    上一篇:oracle怎么修改表结构 下一篇:oracle的数据类型怎么进行转换

    相关文章推荐

    • oracle怎么查询指定用户的表空间• oracle怎么查询有哪些表空间• oracle与db2的区别是什么• oracle怎么查询表结构• oracle怎么查询指定用户下的所有表• oracle怎么增加数据

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网