SQL ORDER BY Clause

29 Mar 2025 | 7 分钟阅读
  • 当我们需要根据 SQL 数据库表中存储的列对记录进行排序时,我们会考虑在 SQL 中使用 ORDER BY 子句。
  • SQL 中的 ORDER BY 子句有助于我们根据表的特定列对记录进行排序。这意味着,在 ORDER BY 子句上应用了值的列中的所有值都将被排序,并且相应的列值将按照我们在上一步中获得值的顺序显示。
  • 使用 ORDER BY 子句,我们可以根据需要以升序或降序对记录进行排序。当 ASC 关键字与 ORDER BY 子句一起使用时,记录将以升序排序。DESC 关键字将以降序对记录进行排序。
  • 如果在用于排序记录的列后未指定任何关键字,则默认情况下将按升序进行排序。

在编写排序记录的查询之前,让我们先了解一下语法。

升序排序记录的语法

降序排序记录的语法

不使用 ASC 关键字升序排序记录的语法

让我们通过示例进一步探讨这个主题。我们将使用 MySQL 数据库来编写示例查询。

假设我们有一个包含以下记录的 customers 表:

ID姓名年龄地址工资
1Himani Gupta21Modinagar22000
2Shiva Tiwari22博帕尔21000
3Ajeet Bhargav45Meerut65000
4Ritesh Yadav36Azamgarh26000
5Balwant Singh45瓦拉纳西36000
6Mahesh Sharma26Mathura22000
7Rohit Shrivastav19Ahemdabad38000
8Neeru Sharma29Pune40000
9Aakash Yadav32孟买43500
10Sahil Sheikh35Aurangabad68800

示例 1

编写查询以升序排序 customers 表中存储的客户姓名记录。

查询

在此 SELECT 查询中,ORDER BY 子句应用于 'Name' 列以对记录进行排序。ASC 关键字将以升序排序记录。

您将得到以下输出

ID姓名年龄地址工资
9Aakash Yadav32孟买43500
3Ajeet Bhargav45Meerut65000
5Balwant Singh45瓦拉纳西36000
1Himani Gupta21Modinagar22000
6Mahesh Sharma26Mathura22000
8Neeru Sharma29Pune40000
4Ritesh Yadav36Azamgarh26000
7Rohit Shrivastav19Ahemdabad38000
10Sahil Sheikh35Aurangabad68800
2Shiva Tiwari22博帕尔21000

customers 表中的所有记录均以客户姓名的升序显示。

示例 2

编写查询以升序排序 customers 表中存储的地址记录。

查询

在此 SELECT 查询中,ORDER BY 子句应用于 'Address' 列以对记录进行排序。ORDER BY 子句后未使用的关键字。因此,记录将默认按升序排序。

您将得到以下输出

ID姓名年龄地址工资
7Rohit Shrivastav19Ahemdabad38000
10Sahil Sheikh35Aurangabad68800
4Ritesh Yadav36Azamgarh26000
2Shiva Tiwari22博帕尔21000
6Mahesh Sharma26Mathura22000
3Ajeet Bhargav45Meerut65000
1Himani Gupta21Modinagar22000
9Aakash Yadav32孟买43500
8Neeru Sharma29Pune40000
5Balwant Singh45瓦拉纳西36000

customers 表中的所有记录均以客户地址的升序显示。

示例 3

编写查询以降序排序 customers 表中存储的客户薪水记录。

查询

在此 SELECT 查询中,ORDER BY 子句应用于 'Salary' 列以对记录进行排序。DESC 关键字将以降序排序记录。

您将得到以下输出

ID姓名年龄地址工资
10Sahil Sheikh35Aurangabad68800
3Ajeet Bhargav45Meerut65000
9Aakash Yadav32孟买43500
8Neeru Sharma29Pune40000
7Rohit Shrivastav19Ahemdabad38000
5Balwant Singh45瓦拉纳西36000
4Ritesh Yadav36Azamgarh26000
6Mahesh Sharma26Mathura22000
1Himani Gupta21Modinagar22000
2Shiva Tiwari22博帕尔21000

customers 表中的所有记录均以客户薪水的降序显示。

示例 4

编写查询以降序排序 customers 表中存储的客户年龄记录。

查询

在此 SELECT 查询中,ORDER BY 子句应用于 'Age' 列以对记录进行排序。DESC 关键字将以降序排序记录。

您将得到以下输出

ID姓名年龄地址工资
3Ajeet Bhargav45Meerut65000
5Balwant Singh45瓦拉纳西36000
4Ritesh Yadav36Azamgarh26000
10Sahil Sheikh35Aurangabad68800
9Aakash Yadav32孟买43500
8Neeru Sharma29Pune40000
6Mahesh Sharma26Mathura22000
2Shiva Tiwari22博帕尔21000
1Himani Gupta21Modinagar22000
7Rohit Shrivastav19Ahemdabad38000

customers 表中的所有记录均以客户年龄的降序显示。

假设我们有另一个名为 agents 的表,其中包含以下记录

AID名称WorkAreaProfit_PercentContactNumber薪金
1Gurpreet Singh班加罗尔1998967543243000
2Sakshi Kumari金奈5819056734225000
3Prachi Desai孟买2905612343260000
4Shivani MorePune3889423678935500
5Pallavi Singh德里4779809234138700
6Rohini KulkarniAmbala8789094561225670
7Shweta Dixit昌迪加尔6889878645331670
8Sonakshi TiwariUdaipur2980945342125050
9Anushka TripathiUjjain9890912432638000
10Devika Sharma果阿7786452314544050

示例 1

编写查询以升序排序 agents 表中存储的代理姓名记录。

查询

在此 SELECT 查询中,ORDER BY 子句应用于 'Name' 列以对记录进行排序。ASC 关键字将以升序排序记录。

您将得到以下输出

AID名称WorkAreaProfit_PercentContactNumber薪金
9Anushka TripathiUjjain9890912432638000
10Devika Sharma果阿7786452314544050
1Gurpreet Singh班加罗尔1998967543243000
5Pallavi Singh德里4779809234138700
3Prachi Desai孟买2905612343260000
6Rohini KulkarniAmbala8789094561225670
2Sakshi Kumari金奈5819056734225000
4Shivani MorePune3889423678935500
7Shweta Dixit昌迪加尔6889878645331670
8Sonakshi TiwariUdaipur2980945342125050

agents 表中的所有记录均以代理姓名的升序显示。

示例 2

编写查询以降序排序 agents 表中存储的工作区域记录。

查询

在此 SELECT 查询中,ORDER BY 子句应用于 'WorkArea' 列以对记录进行排序。DESC 关键字将以降序排序记录。

您将得到以下输出

AID名称WorkAreaProfit_PercentContactNumber薪金
9Anushka TripathiUjjain9890912432638000
8Sonakshi TiwariUdaipur2980945342125050
4Shivani MorePune3889423678935500
3Prachi Desai孟买2905612343260000
10Devika Sharma果阿7786452314544050
5Pallavi Singh德里4779809234138700
2Sakshi Kumari金奈5819056734225000
7Shweta Dixit昌迪加尔6889878645331670
1Gurpreet Singh班加罗尔1998967543243000
6Rohini KulkarniAmbala8789094561225670

agents 表中的所有记录均以客户工作区域的降序显示。

示例 3

编写查询以升序排序 agents 表中存储的代理薪水记录。

查询

在此 SELECT 查询中,ORDER BY 子句应用于 'Salary' 列以对记录进行排序。ORDER BY 子句后未使用的关键字。因此,记录将默认按升序排序。

您将得到以下输出

AID名称WorkAreaProfit_PercentContactNumber薪金
2Sakshi Kumari金奈5819056734225000
8Sonakshi TiwariUdaipur2980945342125050
6Rohini KulkarniAmbala8789094561225670
7Shweta Dixit昌迪加尔6889878645331670
4Shivani MorePune3889423678935500
9Anushka TripathiUjjain9890912432638000
5Pallavi Singh德里4779809234138700
1Gurpreet Singh班加罗尔1998967543243000
10Devika Sharma果阿7786452314544050
3Prachi Desai孟买2905612343260000

agents 表中的所有记录均以客户薪水的升序显示。

示例 4

编写查询以降序排序 agents 表中存储的代理薪水记录。

查询

在此 SELECT 查询中,ORDER BY 子句应用于 'Salary' 列以对记录进行排序。DESC 关键字将以降序排序记录。

您将得到以下输出

AID名称WorkAreaProfit_PercentContactNumber薪金
3Prachi Desai孟买2905612343260000
10Devika Sharma果阿7786452314544050
1Gurpreet Singh班加罗尔1998967543243000
5Pallavi Singh德里4779809234138700
9Anushka TripathiUjjain9890912432638000
4Shivani MorePune3889423678935500
7Shweta Dixit昌迪加尔6889878645331670
6Rohini KulkarniAmbala8789094561225670
8Sonakshi TiwariUdaipur2980945342125050
2Sakshi Kumari金奈5819056734225000

agents 表中的所有记录均以客户地址的降序显示。