ORDER BY 子句 (SQL Server Compact)

指定结果集的排序顺序。ORDER BY 子句在子查询中无效。您还可以选择使用 OFFSET-FETCH 子句从结果集中仅提取某个时间范围或某一页的结果。

语法

[ORDER BY { order_by_expression [ ASC | DESC ] } [ ,...n][<offset_fetch>] ] 

<offset_fetch> ::= {OFFSET { integer_constant | offset_row_count_expression } { ROW | ROWS }    [FETCH { FIRST | NEXT } {integer_constant | fetch_row_count_expression } { ROW | ROWS } ONLY    ]}

参数

  • order_by_expression
    指定要排序的列。排序列可以按名称或列别名指定,这可由表名或表达式限定。可以指定多个排序列。ORDER BY 子句中排序列的顺序将决定排序后结果集的结构。

    ORDER BY 子句可以包括选择列表中未出现的项。

    备注

    在 ORDER BY 子句中,不能使用数据类型为 ntext 和 image 的列。

  • ASC
    指定所指定列中的值应按升序排序,即从最低值往最高值排序。

  • DESC
    指定按降序,从最高值到最低值对指定列中的值进行排序。空值被视为最低的可能值。

  • OFFSET { integer_constant | offset_row_count_expression } { ROW | ROWS }
    指定在从查询表达式中开始返回行之前,将跳过的行数。OFFSET 子句的参数可以是大于或等于零的整数或表达式。ROW 和 ROWS 可以互换使用。

  • FETCH {FIRST|NEXT} <行计数表达式> {ROW|ROWS} ONLY
    指定在处理 OFFSET 子句后,将返回的行数。FETCH 子句的参数可以是大于或等于 1 的整数或表达式。ROW 和 ROWS 可以互换使用。同样,FIRST 和 NEXT 可以互换使用。

注释

对 ORDER BY 子句中的项数没有限制。

如果同 UNION 语句一起使用 ORDER BY 子句,排序列必须为第一个 SELECT 语句中所指定列名或列别名的列。例如,下面第一个 SELECT 语句可以成功执行,而第二个将失败。

因为 col1 属于第一个表 (t1),所以此语句可以成功执行。

Create t1 (col1 int, col2 int);

Create t2 (col3 int, col4 int);

SELECT * from t1 UNION SELECT * from t2 ORDER BY col1;

因为 col3 不属于第一个表 (t1),所以此语句将失败。

SELECT * from t1 UNION SELECT * from t2 ORDER BY col3;

示例

下面的示例将按雇员的名字列出雇员:

SELECT First Name + ' ' + Last Name FROM Employees ORDER BY First Name

下面的示例说明如何将 OFFSET-FETCH 子句与 ORDER BY 一起使用,其中,从排序的结果集中跳过前 10 行并且返回剩余行。

SELECT First Name + ' ' + Last Name FROM Employees ORDER BY First Name OFFSET 10 ROWS;

请参阅

参考

OFFSET FETCH 子句 (SQL Server Compact)