PL/SQL 知识量:16 - 57 - 244
使用SELECT语句获得的数据一般是没有排序的(使用DISTINCT关键词除外)。为了方便阅读和使用,最好对查询结果进行一次排序。在SQL语言中,用于排序的是ORDER BY子句。
使用ORDER BY子句可以指定在SELECT语句返回的列中所使用的排序顺序。其语法格式可表示如下:
ORDER BY { expr | position | c_alias } [ ASC | DESC ] [ NULLS FIRST | NULLS LAST ] [, { expr | position | c_alias } [ ASC | DESC ] [ NULLS FIRST | NULLS LAST ] ]...
简要说明:
ORDER BY项:排序关键词。
expr项:表达式。
position项:表中列的位置。
c_alias项:别名。
[ ASC | DESC ]项:正序或倒序。
[ NULLS FIRST | NULLS LAST ]项:对空字段的处理方式。
可以根据多个字段排序。
其中,表达式是用于排序的列。可以对多列进行排序,各列在ORDER BY子句中的顺序决定了排序过程中的优先级。
注意:
在默认情况下,ORDER BY按升序进行排列,即默认使用的是ASC关键词。如果要按降序进行排列,则必须使用DESC关键词。
ORDER BY子句一定要放在所有子句的最后(无论包含多少子句)。
对于时间、数值类型的字段排序,其排序规则就是按照时间的早晚、数值的大小进行的;对于字符型的字段排序,则是依照其ASCII码的先后顺序进行的。
在排序时,空值(NULL)默认被看成最大的值。有关NULL值,在PL/SQL中可以设置它所在的位置。
示例:
SQL> select * from people order by age; ID NAME AGE SEX HEIGHT WEIGHT ---- ---------- ---- ------ ------ ------ 4 Susan 19 female 168 55 1 Bob 25 male 170 70 2 Jeff 27 male 176 82 5 Tom 29 male 188 95 6 Lucy 29 female 168 65 3 Jan 32 female 166 52 7 Tomas 32 male 166 60 7 rows selected
使用ORDER BY子句也可以根据两列或多列的结果进行排序,只要用逗号分隔不同的排序关键词就可以了。
SQL> select * from people order by age,height; ID NAME AGE SEX HEIGHT WEIGHT ---- ---------- ---- ------ ------ ------ 4 Susan 19 female 168 55 1 Bob 25 male 170 70 2 Jeff 27 male 176 82 6 Lucy 29 female 168 65 5 Tom 29 male 188 95 3 Jan 32 female 166 52 7 Tomas 32 male 166 60 7 rows selected
实际的排序结果是根据ORDER BY子句后面列名的顺序确定优先级的。
ORDER BY子句除了可以根据列名进行排序外,还支持根据列的相对位置(即序号)进行排序。
下面示例根据第3列(sex)和第5列(weight)进行排序:
SQL> select * from people order by 3,5; ID NAME AGE SEX HEIGHT WEIGHT ---- ---------- ---- ------ ------ ------ 4 Susan 19 female 168 55 1 Bob 25 male 170 70 2 Jeff 27 male 176 82 6 Lucy 29 female 168 65 5 Tom 29 male 188 95 3 Jan 32 female 166 52 7 Tomas 32 male 166 60 7 rows selected
Copyright © 2017-Now pnotes.cn. All Rights Reserved.
编程学习笔记 保留所有权利
MARK:3.0.0.20240214.P35
From 2017.2.6