Collection Contents 上一页 下一页 PDF

ASA SQL 用户指南

对查询结果进行汇总、分组和排序

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


ORDER BY 子句允许按一列或多列对查询结果进行排序。每一次排序都可以是升序 (ASC) 或降序 (DESC)。如果没有指定任何排序顺序,则按升序 (ASC) 进行排序。

简单示例 

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

SELECT id, name
FROM product
ORDER BY name
id name
400 Baseball Cap
401 Baseball Cap
700 Shorts
600 Sweatshirt
... ...
按多列排序 

如果您在 ORDER BY 子句中指定了多列,则排序是嵌套的。

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

SELECT id, name, quantity
FROM product
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 product
WHERE name like '%shirt%'
ORDER BY 2, 3 DESC
SELECT id, name, quantity
FROM product
WHERE name like '%shirt%'
ORDER BY 2, quantity DESC

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

SELECT id, name
FROM product
WHERE name like '%shirt%'
ORDER BY 2, quantity DESC
ORDER BY 和 NULL 

对于 ORDER BY,以升序排列时 NULL 排在所有其他值之前。

ORDER BY 和大小写 

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


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

Collection Contents 上一页 下一页 PDF