SQL - 排序結果



SQL 的ORDER BY 子句用於根據一個或多個列對資料進行升序或降序排序。預設情況下,某些資料庫會按升序排序查詢結果。

此外,ORDER BY 子句還可以按首選順序對資料庫表中的資料進行排序。這種情況下,表記錄的排序可能不是按任何標準順序(如字母順序或字典順序),而是基於任何外部條件。例如,在包含組織各種客戶所下訂單列表的 ORDERS 表中,可以根據下訂單的日期對訂單詳情進行排序。這不需要按字母順序排序,而是基於“先到先得”。

語法

用於按升序或降序排序結果的 ORDER BY 子句的基本語法如下:

SELECT column-list 
FROM table_name 
[WHERE condition] 
[ORDER BY column1, column2, .. columnN] [ASC | DESC];

您可以在 ORDER BY 子句中使用多個列。請確保您用於排序的任何列都包含在列列表中。

按升序排序結果

使用 SQL 中的 Order By 子句,可以預設或透過在子句條件中指定“ASC”關鍵字來按升序對資料庫表中的記錄進行排序。讓我們來看一個例子來理解這一點。

示例

假設我們使用 CREATE TABLE 語句建立了一個名為CUSTOMERS的表,如下所示:

CREATE TABLE CUSTOMERS (
   ID INT NOT NULL,
   NAME VARCHAR (20) NOT NULL,
   AGE INT NOT NULL,
   ADDRESS CHAR (25),
   SALARY DECIMAL (18, 2),       
   PRIMARY KEY (ID)
);

現在,使用 INSERT 語句向此表中插入值,如下所示:

INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) VALUES 
(1, 'Ramesh', 32, 'Ahmedabad', 2000.00 ),
(2, 'Khilan', 25, 'Delhi', 1500.00 ),
(3, 'kaushik', 23, 'Kota', 2000.00 ),
(4, 'Chaitali', 25, 'Mumbai', 6500.00 ),
(5, 'Hardik', 27, 'Bhopal', 8500.00 ),
(6, 'Komal', 22, 'Hyderabad', 4500.00 ),
(7, 'Muffy', 24, 'Indore', 10000.00 );

表將建立為:

ID 姓名 年齡 地址 薪水
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 Hyderabad 4500.00
7 Muffy 24 Indore 10000.00

以下是一個示例,它將按姓名和薪水升序排序結果。

SELECT * FROM CUSTOMERS ORDER BY NAME;

輸出

這將產生以下結果:

ID 姓名 年齡 地址 薪水
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
3 kaushik 23 Kota 2000.00
2 Khilan 25 Delhi 1500.00
6 Komal 22 Hyderabad 4500.00
7 Muffy 24 Indore 10000.00
1 Ramesh 32 Ahmedabad 2000.00

按降序排序結果

但是,要按降序對資料庫表中的記錄進行排序,我們需要在子句條件中指定“DESC”關鍵字。讓我們來看一個例子來理解這一點。

示例

以下查詢根據NAME列按降序對 CUSTOMERS 表的記錄進行排序。

SELECT * FROM CUSTOMERS ORDER BY NAME DESC;

輸出

這將產生以下結果:

ID 姓名 年齡 地址 薪水
1 Ramesh 32 Ahmedabad 2000.00
7 Muffy 24 Indore 10000.00
6 Komal 22 Hyderabad 4500.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
5 Hardik 27 Bhopal 8500.00
4 Chaitali 25 Mumbai 6500.00

按首選順序排序結果

也可以使用 ORDER BY 子句中的 CASE 語句按自己的首選順序對錶的記錄進行排序。所有值都與它們應該排序的位置一起在子句中指定;如果未給值指定任何數字,則它們會自動按升序排序。

示例

要按自己的首選順序獲取行,使用的 SELECT 查詢如下:

SELECT * FROM CUSTOMERS
ORDER BY ( CASE ADDRESS
   WHEN 'DELHI' 	 THEN 1
   WHEN 'BHOPAL' 	 THEN 2
   WHEN 'KOTA' 	 THEN 3
   WHEN 'AHMEDABAD' THEN 4
   WHEN 'Hyderabad' 	THEN 5
   ELSE 100 END) ASC, ADDRESS DESC;

輸出

這將產生以下結果:

ID 姓名 年齡 地址 薪水
2 Khilan 25 Delhi 1500.00
5 Hardik 27 Bhopal 8500.00
3 kaushik 23 Kota 2000.00
1 Ramesh 32 Ahmedabad 2000.00
6 Komal 22 Hyderabad 4500.00
4 Chaitali 25 Mumbai 6500.00
7 Muffy 24 Indore 10000.00

這將首先按您自己的首選順序對客戶的地址進行排序,然後按其餘地址的自然順序排序。此外,其餘地址將按反字母順序排序。

廣告