除非另有要求,否则数据库服务器按照没有任何意义的顺序返回表中的行。通常,以一种更有意义的顺序查看表中的行将十分有用。例如,您可能要按字母顺序查看产品。
您可以通过在 SELECT 语句末尾添加 ORDER BY 子句对结果集中的行进行排序。此 SELECT 语句的语法如下:
SELECT column-name-1, column-name-2,... FROM table-name ORDER BY order-by-column-name
必须用要查询的列名和表名分别替换 column-name-1、column-name-2 和 table-name,并用该表中的某列替换 order-by-column-name。像以前一样,您可以使用星号作为表中所有列的简写形式。
在 Interactive SQL 中,执行以下查询:
SELECT ID, Name, Description FROM Products ORDER BY Name; |
ID | Name | Description |
---|---|---|
400 | Baseball Cap | Cotton Cap |
401 | Baseball Cap | Wool cap |
700 | Shorts | Cotton Shorts |
600 | Sweatshirt | Hooded Sweatshirt |
... | ... | ... |
子句的顺序有意义 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。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |