SQL 结果排序
SQL ORDER BY 子句用于根据一个或多个列,按升序或降序对数据进行排序。默认情况下,某些数据库以升序对查询结果进行排序。
除此之外,ORDER BY 子句还可以对数据库表中的数据按照首选的顺序进行排序。这种情况下可能不会按照任何标准顺序(如字母顺序或词典顺序)对表的记录进行排序,而是可以根据任何外部条件进行排序。例如,在一个包含了组织的各个客户所下订单列表的 ORDERS 表中,可以根据订单下达的日期对订单的详细信息进行排序。这个排序不是按照字母顺序排序,而是按照“先到先得”的原则进行排序。
语法
ORDER BY 子句的基本语法用于按升序或降序对结果进行排序,如下所示−
在ORDER BY子句中可以使用多个列。确保无论使用哪个列进行排序,该列都应在列列表中。
按升序对结果进行排序
使用SQL中的ORDER BY子句,可以按升序对数据库表中的记录进行排序,可以使用默认设置,也可以在子句条件中指定”ASC”关键字。让我们看一个示例来理解这个过程。
示例
假设我们已经使用CREATE TABLE语句创建了一个名为 CUSTOMERS 的表,如下所示 –
现在,使用INSERT语句将值插入到这个表中,方法如下:
表将被创建为:
ID | NAME | AGE | ADDRESS | SALARY |
---|---|---|---|---|
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 | NAME | AGE | ADDRESS | SALARY |
---|---|---|---|---|
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表的记录进行排序。
输出
这将产生以下结果−
ID | NAME | AGE | ADDRESS | SALARY |
---|---|---|---|---|
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 |
按照首选顺序排序结果
使用CASE语句和ORDER BY子句可以按照自己的首选顺序对表的记录进行排序。在子句中指定所有值以及它们应该被排序的位置;如果值没有给定任何数字,它们将自动按照升序排序。
示例
为了获取按照自己的首选顺序排序的行,使用的SELECT查询如下所示 –
输出
这将产生以下结果 –
ID | NAME | AGE | ADDRESS | SALARY |
---|---|---|---|---|
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 |
这将根据字段对客户进行排序,首先根据您的 特定顺序 进行排序,然后按照自然顺序排序其余地址。此外,剩余的地址将按照逆字母顺序排序。