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 子句对混合大小写数据的影响取决于创建数据库时指定的数据库归类和大小写区分属性。
显式限制查询返回的行数
ORDER BY 和 GROUP BY
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |