order by排序的用法

2021-10-02 01:48:06 字數 1208 閱讀 6901

一、order by 1

其實1表示第乙個字段,2表示第二字段; 依此類推,當表中只有2個字段時,oder by 3就會出錯,這個跟order by 列名沒有什麼區別,不過在特殊情況下還是很有用的.

select   owner,table_name,tablespace_name,blocks,last_analyzed 

from   all_tables   order   by   1,2; 

根據第一列和第二列排序 

相當於 

order by owner,table_name 

二、order by 中關於null的處理

預設處理,oracle在order by 時認為null是最大值,所以如果是asc公升序則排在最後,desc降序則排在最前。

你也可以使用nulls first 或者nulls last 語法來控制null的位置。

如果order by 中指定了表示式nulls first則表示null值的記錄將排在最前(不管是asc 還是 desc)

如果order by 中指定了表示式nulls last則表示null值的記錄將排在最後 (不管是asc 還是 desc)

select * from zl_cbqc order by cb_ld nulls first

select * from zl_cbqc order by cb_ld desc nulls last

三、多列排序

單列公升序:selectfrom order by ; (預設公升序,即使不寫asc)

單列降序:select from order by desc;

多列公升序:select , from order by , ;

多列降序:select , from order by desc, desc;

多列混合排序:select , from order by desc, asc;

多列規則的排序的時候,如果第一列相同的情況下,會根據第二列繼續排序

四、指定第一位

select * from tb order by decode(blogid,3,1,2), blogid;

通過decode()函式,blogid值為3的那條記錄被轉換為了1,而其他的記錄都是2。

預設公升序排序,blogid = 3時返回1,其他則返回2, 所以blogid = 3的記錄排在最前,所以不管怎樣,blogid為3的值必須排在第一位,其他的記錄按照blogid公升序排序。

資料庫 order by排序語句的用法

資料庫中常用order by關鍵字 對結果集進行排序 又可使用desc和asc來進行指定規則的排序,那麼desc和asc有什麼作用和差異呢,通常又如何使用,可以看看這篇文章。select column name,column name from table name order by column ...

ORACLE的order by中文排序

在使用order by排序的時候,出現如下情況 印象中中文排序應該預設是按照拼音排序的,為何 鑫 會排在 中 的後面呢?猜想order by是不是根據對應字元的ascii碼排的呢,因此列出了對應的ascii,如下 由此基本可以斷定,確實是通過ascii的大小來排序的,這也解釋了為什麼數字會排在字母之...

order by 多個排序條件

order子句按乙個或多個 最多16個 字段排序查詢結果,可以是公升序 asc 也可以是降序 desc 預設是公升序。order子句通常放在sql 語句的最後。order子句中定義了多個字段,則按照欄位的先後順序排序 select from tablename order by column1 de...