ORDER BY 子句
ORDER BY 子句指定要返回所选行的特定顺序。 顺序按列或表达式值的升序或降序整理顺序排序。
例如,要检索按部门编号字母数字顺序列出的女性员工的姓名和部门编号,可以使用以下 SELECT 语句:
SELECT LASTNAME,WORKDEPT
FROM CORPDATA.EMPLOYEE
WHERE SEX='F'
ORDER BY WORKDEPT;结果如下。
| LASTNAME | WORKDEPT |
|---|---|
| HAAS | A00 |
| 赫明格 | A00 |
| KWAN | C01 |
| QUINTANA | C01 |
| NICHOLLS | C01 |
| 北约 Z | C01 |
| PIANKA | D11 |
| SCOUTTEN | D11 |
| LUTZ | D11 |
| JOHN | D11 |
| PULASKI | D21 |
| JOHNSON | D21 |
| PEREZ | D21 |
| HENDERSON | E11 |
| SCHNEIDER | E11 |
| SETRIGHT | E11 |
| 施瓦茨 | E11 |
| 斯普林格 | E11 |
| 黄 | E21 |
注: 空值作为最高值排序。
在 ORDER BY 子句中指定的列不需要包含在 SELECT 子句中。 例如,以下声明将首先返回以最大工资订购的所有女性员工:
SELECT LASTNAME,FIRSTNME
FROM CORPDATA.EMPLOYEE
WHERE SEX='F'
ORDER BY SALARY DESC;如果指定了 AS 子句来命名选择列表中的结果列,那么可以在 ORDER BY 子句中指定此名称。 在 AS 子句中指定的名称在选择列表中必须唯一。 例如,要检索按字母顺序列出的员工全名,可以使用以下 select-statement:
SELECT LASTNAME CONCAT FIRSTNME AS FULLNAME
FROM CORPDATA.EMPLOYEE
ORDER BY FULLNAME;可以选择将此 SELECT 语句编写为:
SELECT LASTNAME CONCAT FIRSTNME
FROM CORPDATA.EMPLOYEE
ORDER BY LASTNAME CONCAT FIRSTNME;您可以使用数字,而不是对列进行命名以对结果进行排序。 例如, ORDER BY 3 指定您希望结果按结果表的 第三 列 (由选择列表指定) 排序。 当排序值不是指定的列时,使用数字对结果表的行进行排序。
您还可以指定是希望 SQL 按升序 (ASC) 还是降序 (DESC) 顺序整理行。 缺省值为升序整理顺序。 在先前的 SELECT 语句中, SQL 首先返回具有最低 FULLNAME 表达式 (按字母和数字顺序) 的行,然后返回具有较高值的行。 要根据此名称以降序整理顺序对行进行排序,请指定:
... ORDER BY FULLNAME DESC您可以指定辅助排序顺序 (或多个排序顺序级别) 以及主排序顺序。 在上一个示例中,您可能希望首先按部门编号对行进行排序,然后在每个部门内按员工姓名对行进行排序。 为此,请指定:
... ORDER BY WORKDEPT, FULLNAME如果在 ORDER BY 子句中使用字符列, UCS-2 或 UTF-16 图形列,那么这些列的排序将基于运行查询时生效的排序顺序。