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關鍵字恰恰相反


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