首頁  >  文章  >  資料庫  >  oracle怎麼將查詢結果排序

oracle怎麼將查詢結果排序

青灯夜游
青灯夜游原創
2022-01-13 11:33:4318555瀏覽

在oracle中,可以使用「SELECT」語句和「ORDER BY」子句來進行查詢排序,可依升序或降序對一列或多列的查詢結果集進行排序,語法「SELECT 欄位名FROM 資料表名ORDER BY 欄位名[ASC|DESC]」。

oracle怎麼將查詢結果排序

本教學操作環境:Windows7系統、Oracle 11g版、Dell G3電腦。

在oracle中,可以使用「SELECT」語句和「ORDER BY」子句來進行查詢排序。

在Oracle中,表中是以非指定順序儲存行資料記錄的,它不管行插入資料庫的順序如何。若要依列以升序或降序查詢行記錄,必須明確指示Oracle資料庫要如何去排序。

例如,您可能想要按名稱的字母順序列出所有客戶,或按照從最低到最高信用限額的順序顯示所有客戶。

要將查詢的資料排序,請如下將ORDER BY子句加入SELECT語句中。

ORDER BY子句可以升序或降序對一列或多列的結果集進行排序。

語法:

SELECT
    字段名,
FROM
    table_name
ORDER BY
    字段名 [ASC | DESC] [NULLS FIRST | NULLS LAST]

要按列排序結果集,可以在ORDER BY子句之後列出該列。

依照列名是一個排序順序,可以是:

  • #ASC 表示依升序排序

  • #DESC 表示依降序排序

預設情況下,無論是否指定ASCORDER BY子句都按升序對行進行排序。如果要按降序對行進行排序,請明確使用DESC

NULLS FIRST在非NULL#值之前放置NULL值,NULLS LAST在非NULL值之後放置NULL值。

ORDER BY子句可以依照多列對資料進行排序,每列可能有不同的排序順序。

請注意,ORDER BY子句總是SELECT語句中的最後一個子句。

Oracle ORDER BY子句的範例

下面將使用範例資料庫中的customers表格進行示範。

oracle怎麼將查詢結果排序

以下語句從客戶(customers)表中擷取客戶的:name, addresscredit limit

SELECT name, address, credit_limit FROM customers;

執行上面查詢語句,得到以下結果-

oracle怎麼將查詢結果排序

正如截圖中所看到的,行記錄的順序是未指定的。

1、按列排序行範例

要依照字母順序排列客戶名稱,請使用下列語句:

SELECT name,address,credit_limit
FROM customers
ORDER BY name ASC;

執行上面範例程式碼,得到以下結果-

oracle怎麼將查詢結果排序

ASC指示Oracle按升序對行進行排序。但是ASC是可選的,如果省略,則在預設情況下,ORDER BY子句按指定的列按升序對行進行排序。

因此,下面的表達式:

ORDER BY name ASC

等效於-

ORDER BY name

要按字母順序降序排列客戶名稱,請在ORDER BY子句中的列名之後明確使用DESC,如下所示:

SELECT name, address, credit_limit
FROM customers
ORDER BY name DESC;

執行上面查詢語句,得到以下結果-

oracle怎麼將查詢結果排序

2、按多個列排序行範例

要對多列進行排序,可以用逗號分隔ORDER BY子句中的每列。

請參閱範例資料庫中的以下聯絡人(contacts)表格。

例如,要按first_name進行按升序排序,並按降序對last_name列進行排序,請使用下列語句:

SELECT first_name, last_name
FROM contacts
ORDER BY first_name, last_name DESC;

執行上面範例程式碼,可以看到如下結果-

oracle怎麼將查詢結果排序

從上面截圖可以看到,contact_id91311這兩筆記錄的first_name的值相同,last_name的值是以降序來排列的。

在這個範例中,Oracle首先按first_name升序對行進行排序,以建立初始結果集。然後Oracle依降序對last_name排序初始結果集。

看到類似下面的結果如下:

oracle怎麼將查詢結果排序

在上面的這個結果:

  • 首先,按first_name升序排序。
  • 其次,如果两个名字相同,按last_name降序排列,如Daniel GlassDaniel CostnerDianne SenDianne DerekDoretha TylerDorotha Wong

3、按列位置排序行示例

不需要指定用于排序数据的列名称。如果您愿意,可以使用ORDER BY子句中列的位置。

请参考下语句 -

SELECT name, credit_limit,address
FROM customers
ORDER BY 2 DESC, 1;

在这个例子中,name列的位置是1credit_limit列的位置是2。相当于以下查询语句 -

SELECT name, credit_limit,address
FROM customers
ORDER BY credit_limit DESC, name;

ORDER BY子句中,使用这些列位置来指示Oracle对行进行排序。

4、用NULL值排序行的示例

请参阅示例数据库中的以下地区(locations)表:

oracle怎麼將查詢結果排序

以下语句按城市(city)和州(state)检索位置并对其进行排序:

SELECT country_id, city, state
FROM locations 
ORDER BY state DESC;

执行上面查询语句,得到以下结果 -

oracle怎麼將查詢結果排序

state列有NULL值,这意味着state数据与某些城市(例如:Beijing, HiroshimaLondon)无关。

当使用非NULL值对混合NULL进行排序时,Oracle允许指定哪个应该首先出现。

例如,以下语句按升序对state列进行排序,并首先将NULL值放置在前面。

SELECT country_id, city, state
FROM
    locations
ORDER BY
    state ASC NULLS FIRST;

要放置NULL值在后面,可以使用NULLS LAST,如下面的语句所示:

SELECT country_id, city, state
FROM
    locations
ORDER BY
    state ASC NULLS LAST;

执行上面示例查询语句,得到以下结果:

oracle怎麼將查詢結果排序

5、按函数或表达式排序数据

ORDER BY子句可在一列上应用一个函数,例如字符串函数,数学函数等,并按函数的结果对数据进行排序。

例如,以下语句使用ORDER BY子句中的UPPER()函数来区分客户名称的大小写:

SELECT customer_id, name
FROM customers
ORDER BY UPPER( name );

执行上面查询语句,得到以下结果 -

oracle怎麼將查詢結果排序

推荐教程:《Oracle教程

以上是oracle怎麼將查詢結果排序的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn