SQL中的order by子句


使用select语句检索出的数据一般将以它在顶层表中出现的顺序显示,这有可能是数据最初添加到表中的顺序,但是如果数据随后进行过更新或删除,那么这个顺序将会受到DBMS的重用回收存储空间的方式的影响。因此,如果不明确控制的话,则最终的结果不能依赖该顺序排序。关系数据库设计理论认为,如果不明确规定排序顺序,则不应该假定检索出的数据的顺序有任何意义。


为了明确地排序用select语句检索出的数据,可使用 order by 子句,可以取一个或多个列的名字,据此对输出进行排序。


order by 子句的位置:应该保证它是select语句中最后一条语句。如果它不是最后的子句,将会出现错误消息。


1.单个列排序 (略)


2.多个列排序


要按多个列排序,简单指定列名,列名之间用逗号分开即可,类似选择多个列时那样。

select  prod_id, prod_price , prod_name  from  Products  order  by   prod_price , prod_name;


重要的是理解在按多个列排序时候,排序的顺序完全按照规定进行,对于上述例子中的输出,列出多个行具有相同的prod_price值时才对产品按prod_name进行排序。如果prod_price列中所有的值都是唯一的,则不会按prod_name排序。


3.指定排序方向

数据排序不限于升序排序(从A到Z),这只是默认的排序,还可以使用order  by进行降序排序,必须指定 desc关键字


select  prod_id, prod_price , prod_name  from  Products  order  by   prod_price  desc;  按prod_price降序排序


select  prod_id, prod_price , prod_name  from  Products  order  by   prod_price  desc , prod_name;

这里注意了:  desc关键字只应用到直接位于其前面的列名,即对于上述例子 只对 prod_price指定desc,而prod_name不指定。因此prod_price列以降序排序,而prod_name列仍然按标准的升序排列。所以 如果想在多个列上降序排序,必须对每一列指定 desc关键字。这里和 distinct关键字恰恰相反


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章