Order by 是 SQL 中的一個子句。它用于按升序或降序對查詢的結果集進行排序。它可以使用一列或多列進行排序。在本文中,我們將討論 MS SQL Server 中的 Order by 子句。
語法
在 MS SQL Server 中使用 Order by 子句的語法如下 –
SELECT column1, column2, ... FROM table_name ORDER BY column1 [ASC|DESC], column2 [ASC|DESC], ...;
登錄后復制
語法解釋
SELECT column1, column2, …:指定我們要從表中檢索的列。
FROM table_name:指定我們要從中檢索數(shù)據(jù)的表的名稱。
ORDER BY column1 [ASC|DESC], column2 [ASC|DESC], …:根據(jù)指定列對結果集進行升序或降序排序。
升序排序
默認情況下,Order by 子句按升序對結果集進行排序。要按升序對結果集進行排序,我們不需要顯式指定 ASC 關鍵字。
示例 1
SELECT * FROM customers ORDER BY customer_name;
登錄后復制
在此示例中,結果集將根據(jù) customer_name 列按升序排序。
示例 2
假設我們有一個名為“Employees”的表,其中包含以下列和數(shù)據(jù) –
員工ID |
員工姓名 |
部門 |
薪資 |
---|---|---|---|
1 |
約翰 |
IT |
50000 |
2 |
簡 |
銷售 |
45000 |
3 |
鮑勃 |
IT |
55000 |
4 |
愛麗絲 |
人力資源 |
40000 |
5 |
湯姆 |
人力資源 |
42000 |
如果我們想從Employees表中檢索所有數(shù)據(jù)并按Salary列升序排序,SQL查詢將是 –
SELECT * FROM Employees ORDER BY Salary;
登錄后復制
上述查詢的輸出為 –
員工ID |
員工姓名 |
部門 |
薪資 |
---|---|---|---|
4 |
愛麗絲 |
人力資源 |
40000 |
5 |
湯姆 |
人力資源 |
42000 |
2 |
簡 |
銷售 |
45000 |
1 |
約翰 |
IT |
50000 |
3 |
鮑勃 |
IT |
55000 |
按降序排序
要將結果集按降序排序,我們需要在列名后指定 DESC 關鍵字。
示例 1
SELECT * FROM customers ORDER BY customer_name DESC;
登錄后復制
在此示例中,結果集將根據(jù) customer_name 列按降序排序。
示例 2
如果我們想要從員工表中檢索所有數(shù)據(jù)并按部門列降序排序,SQL 查詢將是 –
SELECT * FROM Employees ORDER BY Department DESC;
登錄后復制登錄后復制
上述查詢的輸出為
員工ID |
員工姓名 |
部門 |
薪資 |
---|---|---|---|
2 |
簡 |
銷售 |
45000 |
1 |
約翰 |
IT |
50000 |
3 |
鮑勃 |
IT |
55000 |
5 |
湯姆 |
人力資源 |
42000 |
4 |
愛麗絲 |
人力資源 |
40000 |
按多列排序
我們還可以按多列對結果集進行排序。在本例中,Order by 子句首先根據(jù)第一列對結果集進行排序,然后根據(jù)第二列對結果集進行排序。
示例 1
SELECT * FROM customers ORDER BY country, customer_name;
登錄后復制登錄后復制
在此示例中,結果集將根據(jù)國家/地區(qū)列按升序排序。如果兩行或多行具有相同的國家/地區(qū),則這些行將根據(jù) customer_name 列按升序排序。
示例 2
如果我們想從Employees表中檢索所有數(shù)據(jù),并首先按Department列升序排序,然后按Salary列升序排序,SQL查詢將是 –
SELECT * FROM Employees ORDER BY Department DESC;
登錄后復制登錄后復制
上述查詢的輸出為
員工ID |
員工姓名 |
部門 |
薪資 |
---|---|---|---|
2 |
簡 |
銷售 |
45000 |
1 |
約翰 |
IT |
50000 |
3 |
鮑勃 |
IT |
55000 |
5 |
湯姆 |
人力資源 |
42000 |
4 |
愛麗絲 |
人力資源 |
40000 |
按多列排序
我們還可以按多列對結果集進行排序。在本例中,Order by 子句首先根據(jù)第一列對結果集進行排序,然后根據(jù)第二列對結果集進行排序。
示例 1
SELECT * FROM customers ORDER BY country, customer_name;
登錄后復制登錄后復制
在此示例中,結果集將根據(jù)國家/地區(qū)列按升序排序。如果兩行或多行具有相同的國家/地區(qū),則這些行將根據(jù) customer_name 列按升序排序。
示例 2
如果我們想要從Employees表中檢索所有數(shù)據(jù),并首先按Department列升序排序,然后按Salary列升序排序,那么SQL查詢將是
SELECT * FROM Employees ORDER BY Department ASC, Salary ASC;
登錄后復制
上述查詢的輸出為
員工ID |
員工姓名 |
部門 |
薪資 |
---|---|---|---|
4 |
愛麗絲 |
人力資源 |
40000 |
5 |
湯姆 |
人力資源 |
42000 |
1 |
約翰 |
IT |
50000 |
3 |
鮑勃 |
IT |
55000 |
2 |
簡 |
銷售 |
45000 |
這些示例演示了如何使用 Order by 子句對 MS SQL Server 中的查詢結果集進行排序。
使用 NULL 值排序
當我們使用 Order by 子句時,NULL 值的排序方式有所不同,具體取決于我們是按升序還是降序排序。按升序排列,首先顯示 NULL 值,按降序排列,最后顯示 NULL 值。
例如
SELECT * FROM customers ORDER BY city DESC;
登錄后復制
在此示例中,結果集將根據(jù)城市列按降序排序。 NULL 值將顯示在最后。
結論
MS SQL Server 中的 Order by 子句是一個功能強大的工具,它允許我們根據(jù)一個或多個列以升序或降序對查詢結果集進行排序。通過了解 Order by 子句的語法和用法,我們可以創(chuàng)建更復雜且更有意義的查詢來從數(shù)據(jù)庫中檢索數(shù)據(jù)。
以上就是MS SQL Server 中的排序依據(jù)的詳細內容,更多請關注www.92cms.cn其它相關文章!