SQL乐园(11):用ORDER BY子句排序
软件世界
观察SELECT语句返回的数据,我们可能会有这么一种印象,数据排列的顺序是杂乱无章的。事实上,SELECT语句返回的记录是按照“自然”顺序排列的,也就是DBMS发现它们的顺序。那么我们可不可以设定返回记录的排列顺序呢?答案是肯定的。
1. 引例
启动SQL Server 2000的“服务管理器”,进入“查询分析器”,在窗口上方的下拉框中选择Northwind数据库,然后在查询窗口中输入以下语句:
SELECT DISTINCT ShipCountry From Orders
点击“执行查询”按钮查看结果,Ship Country的排列顺序是杂乱的。而执行下面这条语句,得到的结果就大不一样了。
SELECT DISTINCT ShipCountry From Orders ORDER BY ShipCountry
2.结构
含有ORDER BY子句的SELECT语句的结构是这样的:
SELECT column1 [,column2……columnN]
FROM table1 [,table2……tableN]
WHERE condition
ORDER BY column1 [ASC|DESC] [,column2 [ASC|DESC]……columnN [ASC|DESC]]
其中,ASC表示升序,DESC表示降序。
提示:升序是默认的顺序。空值被视为最小的可能取值。
3.应用
有了ORDER BY子句,我们想按照逆字母表顺序排列查询结果,只须执行以下语句:SELECT DISTINCT ShipCountry From Orders ORDER BY ShipCountry DESC
如果有这样一种要求,按照ShipCoun try的降序和ShipCity的升序排列查询结果,ORDER BY子句能实现吗?带着这个疑问,我们执行语句“SELECT ShipCoun try,ShipCity From Orders ORDER BY ShipCountry DESC,ShipCity ASC”,查询结果表明:ORDER BY子句能对不同字段按不同的要求进行排序。
提示:要提醒大家的是,执行ORDER BY子句必然要增加查询引擎的负担,如果结果集很大,则很可能导致查询速度和性能显著下降。所以,除非不得以的情况,建议朋友们少使用ORDER BY子句。