SQL ORDER BY 升序排序
- 每当我们想要根据SQL数据库中的表中存储的列对记录进行排序时,我们就会考虑使用SQL中的ORDER BY子句。
- SQL中的ORDER BY子句帮助我们根据表的特定列对记录进行排序。这意味着最初,我们将对应用ORDER BY子句的列中存储的所有值进行排序。然后,将以我们在前一步骤中获得的顺序显示相应的列值。
- 使用ORDER BY子句,我们可以根据需要按升序或降序对记录进行排序。每当与ORDER BY子句一起使用ASC关键字时,记录将按升序排序。而DESC关键字将以降序排序记录。如果在根据其对记录进行排序的列之后未指定关键字,则默认情况下将进行升序排序。
在编写排序记录的查询之前,让我们了解一下语法。
按升序排序记录的语法:
SELECT ColumnName1,…,ColumnNameN FROM TableName ORDER BY ColumnName ASC;
没有使用ASC关键字对记录进行升序排序的语法:
SELECT ColumnName1,…,ColumnNameN FROM TableName ORDER BY ColumnName;
让我们通过例子来更深入地探讨这个主题。我们将使用MySQL数据库来编写这些例子中的查询。
考虑我们有一个名为customers的表,其中包含以下记录:
ID | NAME | AGE | ADDRESS | SALARY |
---|---|---|---|---|
1 | Himani Gupta | 21 | Modinagar | 22000 |
2 | Shiva Tiwari | 22 | Bhopal | 21000 |
3 | Ajeet Bhargav | 45 | Meerut | 65000 |
4 | Ritesh Yadav | 36 | Azamgarh | 26000 |
5 | Balwant Singh | 45 | Varanasi | 36000 |
6 | Mahesh Sharma | 26 | Mathura | 22000 |
7 | Rohit Shrivastav | 19 | Ahemdabad | 38000 |
8 | Neeru Sharma | 29 | Pune | 40000 |
9 | Aakash Yadav | 32 | Mumbai | 43500 |
10 | Sahil Sheikh | 35 | Aurangabad | 68800 |
示例1:
编写一个查询,按照存储在customers表中的客户名称的升序对记录进行排序。
查询:
mysql> SELECT *FROM customers ORDER BY Name ASC;
在SELECT查询中,对列“Name”应用ORDER BY子句以对记录进行排序。ASC关键字将按升序对记录进行排序。
您将获得以下输出:
ID | Name | Age | Address | Salary |
---|---|---|---|---|
9 | Aakash Yadav | 32 | Mumbai | 43500 |
3 | Ajeet Bhargav | 45 | Meerut | 65000 |
5 | Balwant Singh | 45 | Varanasi | 36000 |
1 | Himani Gupta | 21 | Modinagar | 22000 |
6 | Mahesh Sharma | 26 | Mathura | 22000 |
8 | Neeru Sharma | 29 | Pune | 40000 |
4 | Ritesh Yadav | 36 | Azamgarh | 26000 |
7 | Rohit Shrivastav | 19 | Ahemdabad | 38000 |
10 | Sahil Sheikh | 35 | Aurangabad | 68800 |
2 | Shiva Tiwari | 22 | Bhopal | 21000 |
所有在customers表中的记录以顾客姓名的升序显示。
示例2:
编写一个查询,以customers表中存储的地址的升序排序记录。
查询:
mysql> SELECT *FROM customers ORDER BY Address;
在一个SELECT查询中,对’Address’列应用ORDER BY子句对记录进行排序。在ORDER BY子句之后没有使用关键字。因此,默认情况下,记录将按升序排序。
您将获得以下输出:
ID | Name | Age | Address | Salary |
---|---|---|---|---|
7 | Rohit Shrivastav | 19 | Ahemdabad | 38000 |
10 | Sahil Sheikh | 35 | Aurangabad | 68800 |
4 | Ritesh Yadav | 36 | Azamgarh | 26000 |
2 | Shiva Tiwari | 22 | Bhopal | 21000 |
6 | Mahesh Sharma | 26 | Mathura | 22000 |
3 | Ajeet Bhargav | 45 | Meerut | 65000 |
1 | Himani Gupta | 21 | Modinagar | 22000 |
9 | Aakash Yadav | 32 | Mumbai | 43500 |
8 | Neeru Sharma | 29 | Pune | 40000 |
5 | Balwant Singh | 45 | Varanasi | 36000 |
将存储在顾客表中的所有记录按照顾客的地址升序显示。
示例3:
编写一个查询,按照顾客表中存储的顾客工资的升序对记录进行排序。
查询:
mysql> SELECT *FROM customers ORDER BY Salary ASC;
在这里,使用SELECT查询,在列’Salary’上应用ORDER BY子句来对记录进行排序。ASC关键字将按升序对记录进行排序。
您将获得以下输出:
ID | Name | Age | Address | Salary |
---|---|---|---|---|
2 | Shiva Tiwari | 22 | Bhopal | 21000 |
1 | Himani Gupta | 21 | Modinagar | 22000 |
6 | Mahesh Sharma | 26 | Mathura | 22000 |
4 | Ritesh Yadav | 36 | Azamgarh | 26000 |
5 | Balwant Singh | 45 | Varanasi | 36000 |
7 | Rohit Shrivastav | 19 | Ahemdabad | 38000 |
8 | Neeru Sharma | 29 | Pune | 40000 |
9 | Aakash Yadav | 32 | Mumbai | 43500 |
3 | Ajeet Bhargav | 45 | Meerut | 65000 |
10 | Sahil Sheikh | 35 | Aurangabad | 68800 |
所有在customers表中的记录按照客户的薪水进行升序显示。
示例4:
编写一个查询,按照customers表中存储的客户年龄的升序对记录进行排序。
查询:
mysql> SELECT *FROM customers ORDER BY Age;
在SELECT查询中,通过在列’Age’上应用ORDER BY子句来对记录进行排序。在ORDER BY子句之后没有使用关键字。因此,默认情况下,记录将按升序排序。
您将获得以下输出:
ID | Name | Age | Address | Salary |
---|---|---|---|---|
7 | Rohit Shrivastav | 19 | Ahemdabad | 38000 |
1 | Himani Gupta | 21 | Modinagar | 22000 |
2 | Shiva Tiwari | 22 | Bhopal | 21000 |
6 | Mahesh Sharma | 26 | Mathura | 22000 |
8 | Neeru Sharma | 29 | Pune | 40000 |
9 | Aakash Yadav | 32 | Mumbai | 43500 |
10 | Sahil Sheikh | 35 | Aurangabad | 68800 |
4 | Ritesh Yadav | 36 | Azamgarh | 26000 |
5 | Balwant Singh | 45 | Varanasi | 36000 |
3 | Ajeet Bhargav | 45 | Meerut | 65000 |
所有在customers表中的记录按照客户的年龄升序显示。
假设我们有另一个名为agents的表,具有以下记录:
AID | Name | WorkArea | Profit_Percent | ContactNumber | Salary |
---|---|---|---|---|---|
1 | Gurpreet Singh | Bangalore | 1 | 9989675432 | 43000 |
2 | Sakshi Kumari | Chennai | 5 | 8190567342 | 25000 |
3 | Prachi Desai | Mumbai | 2 | 9056123432 | 60000 |
4 | Shivani More | Pune | 3 | 8894236789 | 35500 |
5 | Pallavi Singh | Delhi | 4 | 7798092341 | 38700 |
6 | Rohini Kulkarni | Ambala | 8 | 7890945612 | 25670 |
7 | Shweta Dixit | Chandigarh | 6 | 8898786453 | 31670 |
8 | Sonakshi Tiwari | Udaipur | 2 | 9809453421 | 25050 |
9 | Anushka Tripathi | Ujjain | 9 | 8909124326 | 38000 |
10 | Devika Sharma | Goa | 7 | 7864523145 | 44050 |
示例1:
编写一个查询来按照代理商表中存储的代理商名称的升序排序记录。
查询:
mysql> SELECT *FROM agents ORDER BY Name ASC;
在一个SELECT查询中,对列名为’Name’的列应用ORDER BY子句来对记录进行排序。ASC关键字将按升序对记录进行排序。
你将得到以下输出:
AID | Name | WorkArea | Profit_Percent | ContactNumber | Salary |
---|---|---|---|---|---|
9 | Anushka Tripathi | Ujjain | 9 | 8909124326 | 38000 |
10 | Devika Sharma | Goa | 7 | 7864523145 | 44050 |
1 | Gurpreet Singh | Bangalore | 1 | 9989675432 | 43000 |
5 | Pallavi Singh | Delhi | 4 | 7798092341 | 38700 |
3 | Prachi Desai | Mumbai | 2 | 9056123432 | 60000 |
6 | Rohini Kulkarni | Ambala | 8 | 7890945612 | 25670 |
2 | Sakshi Kumari | Chennai | 5 | 8190567342 | 25000 |
4 | Shivani More | Pune | 3 | 8894236789 | 35500 |
7 | Shweta Dixit | Chandigarh | 6 | 8898786453 | 31670 |
8 | Sonakshi Tiwari | Udaipur | 2 | 9809453421 | 25050 |
所有在代理商表中的记录按代理人姓名的升序显示。
例2:
编写一个查询按代理商表中存储的代理薪水的升序排序记录。
查询:
mysql> SELECT *FROM agents ORDER BY Salary;
在SELECT查询中,对列’Salary’应用ORDER BY子句以排序记录。在ORDER BY子句后没有使用关键字。因此,默认情况下,记录将按升序排序。
您将获得以下输出:
AID | Name | WorkArea | Profit_Percent | ContactNumber | Salary |
---|---|---|---|---|---|
2 | Sakshi Kumari | Chennai | 5 | 8190567342 | 25000 |
8 | Sonakshi Tiwari | Udaipur | 2 | 9809453421 | 25050 |
6 | Rohini Kulkarni | Ambala | 8 | 7890945612 | 25670 |
7 | Shweta Dixit | Chandigarh | 6 | 8898786453 | 31670 |
4 | Shivani More | Pune | 3 | 8894236789 | 35500 |
9 | Anushka Tripathi | Ujjain | 9 | 8909124326 | 38000 |
5 | Pallavi Singh | Delhi | 4 | 7798092341 | 38700 |
1 | Gurpreet Singh | Bangalore | 1 | 9989675432 | 43000 |
10 | Devika Sharma | Goa | 7 | 7864523145 | 44050 |
3 | Prachi Desai | Mumbai | 2 | 9056123432 | 60000 |
所有在代理商表中的记录按客户的薪水以升序显示。
例子3:
写一个查询来按照代理商工作区的升序排序存储在代理商表中的记录。
查询:
mysql> SELECT *FROM agents ORDER BY WorkArea;
在一个SELECT查询中,对列’WorkArea’应用ORDER BY子句来对记录进行排序。在ORDER BY子句后没有使用关键词。因此,记录默认会按照升序进行排序。
你将得到以下输出:
AID | Name | WorkArea | Profit_Percent | ContactNumber | Salary |
---|---|---|---|---|---|
6 | Rohini Kulkarni | Ambala | 8 | 7890945612 | 25670 |
1 | Gurpreet Singh | Bangalore | 1 | 9989675432 | 43000 |
7 | Shweta Dixit | Chandigarh | 6 | 8898786453 | 31670 |
2 | Sakshi Kumari | Chennai | 5 | 8190567342 | 25000 |
5 | Pallavi Singh | Delhi | 4 | 7798092341 | 38700 |
10 | Devika Sharma | Goa | 7 | 7864523145 | 44050 |
3 | Prachi Desai | Mumbai | 2 | 9056123432 | 60000 |
4 | Shivani More | Pune | 3 | 8894236789 | 35500 |
8 | Sonakshi Tiwari | Udaipur | 2 | 9809453421 | 25050 |
9 | Anushka Tripathi | Ujjain | 9 | 8909124326 | 38000 |
将代理表中的所有记录按照客户的工作区升序显示。
例4:
编写一个查询,按照代理表中存储的代理利润百分比的升序对记录进行排序。
查询:
mysql> SELECT *FROM agents ORDER BY Profit_Percent ASC;
在这个SELECT查询中,使用ORDER BY子句对列’Profit_Percent’进行排序以排序记录。ASC关键字将按升序对记录进行排序。
您将获得以下输出:
AID | Name | WorkArea | Profit_Percent | ContactNumber | Salary |
---|---|---|---|---|---|
1 | Gurpreet Singh | Bangalore | 1 | 9989675432 | 43000 |
3 | Prachi Desai | Mumbai | 2 | 9056123432 | 60000 |
8 | Sonakshi Tiwari | Udaipur | 2 | 9809453421 | 25050 |
4 | Shivani More | Pune | 3 | 8894236789 | 35500 |
5 | Pallavi Singh | Delhi | 4 | 7798092341 | 38700 |
2 | Sakshi Kumari | Chennai | 5 | 8190567342 | 25000 |
7 | Shweta Dixit | Chandigarh | 6 | 8898786453 | 31670 |
10 | Devika Sharma | Goa | 7 | 7864523145 | 44050 |
6 | Rohini Kulkarni | Ambala | 8 | 7890945612 | 25670 |
9 | Anushka Tripathi | Ujjain | 9 | 8909124326 | 38000 |
所有出现在代理商表中的记录按客户利润百分比升序显示。