oracle order by语句用法详解

在执行查询操作时,默认情况下会按照行数据插入的先后顺序来显示行数据,但在实际应用中经常需要对数据进行排序,以显示更直观的数据,数据排序用的就是ORDER BY子句。语法如下:

SELECT <*,column [alias],...> FROM table [WHERE condition[s]] [ORDER BY] expr [ASC|DESC];

1.升序排序

默认情况下,当使用ORDER BY执行排序操作时,数据以升序方式排序,也可以在排序列后指定ASC关键字。注意:当执行升序排序时,如果被排序列包含NULL值,那么NULL会显示在最后面。如:

SQL> SELECT ename,sal FROM emp WHERE deptno=30 ORDER BY sal;

2.降序排序

为了执行降序排序,必须要指定DESC关键字。注意:当执行降序排序时,如果排序列存在NULL值,那么NULL会显示在最前面。如:

SQL> SELECT ename,sal FROM emp WHERE deptno=30 ORDER BY sal DESC;

3.使用多列排序

当使用ORDER BY子句进行排序时,不仅可以基于单个列或单个表达式进行排序,也可以基于多个列或多个表达式,当以多个列或多个表达式进行排序时,首先按照第一个列或表达式进行,当第一个列或表达式存在相同数据时,然后按第二个列或表达式进行排序。如:

SQL> SELECT ename,sal,comm FROM emp WHERE deptno=30 ORDER BY sal ASC,comm DESC;

4.使用非选择列进行排序

当使用ORDER BY 子句执行排序操作时,多数情况下选择列表都会包含被排序列,但在实际情况下,选择列表可以不包含排序列。如:

SQL> SELECT ename,job FROM emp ORDER BY sal DESC;

5.使用列别名排序

如果为列或表达式定义了别名,那么当执行排序操作时,既可以使用列或表达式进行排序,也可以使用列别名进行排序。如:

SQL> SELECT ename,sal*12 AS "全年工资" FROM emp WHERE deptno=30 ORDER BY "全年工资" DESC;

6.使用列位置编号排序

当执行排序操作时,不仅可以指定列名,列别名进行排序,也可以按照列或表达式在选择列表中的位置进行排序。如果列名或表达式名称很长,那么使用列位置排序可以缩短排序语句的长度,另外当使用UNION,NNION ALL,INTERSECT,MINUS等集合操作合并查询结果时,如果列表的列名不同,并且希望进行排序,那么必须使用列位置。如:

SQL> SELECT ename,sal*12 FROM emp WHERE deptno=20 ORDER BY 2 DESC;

时间: 2024-09-17 19:20:37

oracle order by语句用法详解的相关文章

oracle中distinct的用法详解_oracle

下面先来看看例子: table表 字段1     字段2    id        name    1           a    2           b    3           c    4           c    5           b 库结构大概这样,这只是一个简单的例子,实际情况会复杂得多. 比如我想用一条语句查询得到name不重复的所有数据,那就必须使用distinct去掉多余的重复记录. select distinct name from table 得到的结果

oracle 10g正则表达式REGEXP_LIKE用法详解

ORACLE中的支持正则表达式的函数主要有下面四个: 1,REGEXP_LIKE :与LIKE的功能相似 2,REGEXP_INSTR :与INSTR的功能相似 3,REGEXP_SUBSTR :与SUBSTR的功能相似 4,REGEXP_REPLACE :与REPLACE的功能相似 它们在用法上与Oracle SQL 函数LIKE.INSTR.SUBSTR 和REPLACE 用法相同, 但是它们使用POSIX 正则表达式代替了老的百分号(%)和通配符(_)字符. POSIX 正则表达式由标准的

Apache中的Order Allow,Deny用法详解_Linux

本文讲述了Apache中的Order Allow,Deny用法.分享给大家供大家参考,具体如下: Allow和Deny可以用于apache的conf文件或者.htaccess文件中(配合Directory, Location, Files等),用来控制目录和文件的访问授权. 所以,最常用的是: Order Deny,Allow Allow from All 注意"Deny,Allow"中间只有一个逗号,也只能有一个逗号,有空格都会出错:单词的大小写不限.上面设定的含义是先设定"

C语言for语句用法详解_C 语言

首先,这里所提到的类C语言指的是如C.C++.C#和Java等语法和C语言一样或类似的程序设计语言.这些语言中,for语句的语法和执行流程都是一样的.本文将就这一语句的用法进行一个较为深入的讨论. for语句: 复制代码 代码如下: for (表达式1;表达式2;表达式3) {   循环语句 } 表达式1 给循环变量赋初值 表达式2 为循环条件 表达式3 用来修改循环变量的值,称为循环步长. for语句的执行流程: 例:编程计算:1+2+3+...+99+100的结果. 这是累加问题,累加问题的

php中switch语句用法详解_php技巧

本文介绍php中的switch语句的用法,它跟其他语句中的switch用法差不多的,但注意有有一个break语句. PHP中switch语句的标准语法: switch (expression) { case label1: code to be executed if expression = label1; break; case label2: code to be executed if expression = label2; break; default: code to be exe

oracle中interval函数用法详解

一.interval函数 interval函数用于将一个整形值转换成时间值date类型的年月或时分秒. oracle语法: interval 'integer [- integer]' {YEAR | MONTH | DAY | HOUR | MINUTE | SECOND} [(precision)][TO {YEAR | MONTH | DAY | HOUR | MINUTE | SECOND}] 注: 1.年.月.日.时.分.秒可以单独使用. 2.{YEAR | MONTH} to {YE

oracle正则表达式regexp_like的用法详解_oracle

/*ORACLE中的支持正则表达式的函数主要有下面四个:1,REGEXP_LIKE :与LIKE的功能相似2,REGEXP_INSTR :与INSTR的功能相似3,REGEXP_SUBSTR :与SUBSTR的功能相似4,REGEXP_REPLACE :与REPLACE的功能相似它们在用法上与Oracle SQL 函数LIKE.INSTR.SUBSTR 和REPLACE 用法相同,但是它们使用POSIX 正则表达式代替了老的百分号(%)和通配符(_)字符.POSIX 正则表达式由标准的元字符(m

group by 语句用法详解

将 where 子句与 group by 子句一起使用 分组查询可以在形成组和计算列函数之前具有消除非限定行的标准 where 子句.必须在group by 子句之前指定 where 子句   $result = mysql教程_query("select groups教程,name,goods from table group by groups,name order by name"); $arr = array(); $i = 0; while($row = mysql_fetc

flash as switch语句用法详解

当一个 case 落空时,它没有 break 语句,但在 break 语句的位置会有一个注释,您在下例中 case A 的后面会看到这样一个注释.在编写 switch 语句时,请使用以下格式:  代码如下 复制代码 switch (condition) { case A :   // 语句   // 落空 case B :   // 语句   break; case Z :   // 语句   break; default :   // 语句   break; } switch语句中defaul