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 子句:查询结果排序

ORDER BY 子句用于按一列或多列对查询结果进行排序。每一次排序都可以是升序 (ASC) 或降序 (DESC)。如果两种排序顺序都未予指定,则采用 ASC 进行排序。

简单示例

以下查询将返回按名称排序的结果:

SELECT ID, Name
   FROM Products
   ORDER BY Name;
ID Name
400 Baseball Cap
401 Baseball Cap
700 Shorts
600 Sweatshirt
... ...
按多列排序

如果您在 ORDER BY 子句中命名了多个列,排序将形成嵌套形式。

以下语句先按名称对 Products 表中的衬衫进行升序排序,然后在每一名称内按 Quantity(降序)进行排序:

SELECT ID, Name, Quantity
   FROM Products
   WHERE Name like '%shirt%'
   ORDER BY Name, Quantity DESC;
ID Name Quantity
600 Sweatshirt 39
601 Sweatshirt 32
302 Tee Shirt 75
301 Tee Shirt 54
... ... ...
使用列位置

可以在选择列表中不使用列名,而改用列位置号。列名称和选择列表编号可以混合使用。以下两个语句与前面语句生成的结果是相同的。

SELECT ID, Name, Quantity
   FROM Products
   WHERE Name like '%shirt%'
   ORDER BY 2, 3 DESC;
SELECT ID, Name, Quantity
   FROM Products
   WHERE Name like '%shirt%'
   ORDER BY 2, Quantity DESC

大多数 SQL 版本都要求选择列表中有 ORDER BY,但 SQL Anywhere 没有此限制。以下查询按 Quantity 对结果进行排序,尽管该列并不出现在选择列表中:

SELECT ID, Name
   FROM Products
   WHERE Name like '%shirt%'
   ORDER BY 2, Quantity DESC;
ORDER BY 和 NULL

使用 ORDER BY 时如果按升序进行排序,NULL 将排在所有其它值之前。

ORDER BY 和大小写

ORDER BY 子句对混合大小写数据的影响取决于创建数据库时指定的数据库归类和大小写区分属性。


显式限制查询返回的行数
ORDER BY 和 GROUP BY