Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » SQL Anywhere 服务器 - SQL 的用法 » 查询和修改数据 » 查询数据

 

ORDER BY 子句:对结果进行排序

除非另有要求,否则数据库服务器按照没有任何意义的顺序返回表中的行。通常,以一种更有意义的顺序查看表中的行将十分有用。例如,您可能要按字母顺序查看产品。

您可以通过在 SELECT 语句末尾添加 ORDER BY 子句对结果集中的行进行排序。此 SELECT 语句的语法如下:

SELECT column-name-1, column-name-2,...
FROM table-name
ORDER BY order-by-column-name

必须用要查询的列名和表名分别替换 column-name-1column-name-2table-name,并用该表中的某列替换 order-by-column-name。像以前一样,您可以使用星号作为表中所有列的简写形式。

♦  按字母顺序列出产品
注意
  • 子句的顺序有意义   ORDER BY 子句必须在 FROM 子句和 SELECT 子句之后。

  • 您可以指定升序或降序   缺省顺序是升序。您可以通过在子句的末尾添加关键字 DESC 指定降序,如在下面的查询中所示:
    SELECT ID, Quantity
       FROM Products
       ORDER BY Quantity DESC;

    ID Quantity
    400 112
    700 80
    302 75
    301 54
    600 39
    ... ...

  • 您可以根据多个列进行排序   以下查询先按大小(按字母顺序)排序,然后按名称进行排序:
    SELECT ID, Name, Size
       FROM Products
       ORDER BY Size, Name;

    ID Name Size
    600 Sweatshirt Large
    601 Sweatshirt Large
    700 Shorts Medium
    301 Tee Shirt Medium
    ... ... ...

  • ORDER BY 列不一定在选择列表中   以下查询通过单价对产品进行排序,即使价格不包括在结果集中
    SELECT ID, Name, Size
       FROM Products
       ORDER BY UnitPrice;

    ID Name Size
    500 Visor One size fits all
    501 Visor One size fits all
    300 Tee Shirt Small
    400 Baseball Cap One size fits all
    ... ... ...

  • 如果您不使用 ORDER BY 子句并且多次执行查询,您可能会得到不同的结果   这是因为 SQL Anywhere 可能以不同的顺序返回相同的结果集。当缺少 ORDERBY 子句时,SQL Anywhere 以最有效的顺序返回行。这意味着结果集的外观可能随您上一次访问行的时间和其它因素的不同而有所变化。确保以特定的顺序返回行的唯一方法是使用 ORDER BY。


使用索引提高 ORDER BY 的性能