SQL ORDER BY 排序


使用SQL ORDER BY子句对结果集进行排序

SQL ORDER BY子句介绍

要对SELECT语句返回的结果集进行排序,可以使用ORDER BY子句。

下面的查询演示了如何在SELECT语句中使用ORDER BY子句:

1
2
3
4
5
6
7
SELECT
column1, column2
FROM
table
ORDER BY
(expr | column) ASC,
(expr | column) DESC;

ORDER BY子句允许您根据列(column)或表达式(expr)对结果集进行排序,
列中的值或表达式的返回值必须是可排序的,即返回结果的数据类型必须是字符、数字或日期时间。

对结果集按升序排序使用ASC关键字,按降序排序使用DESC关键字。 默认是(ASC)按照升序进行排序。

要对多个列进行排序,只需在ORDER BY子句中指定其他列,并用逗号(,)隔开。

可以按升序对一列进行排序,也可以按降序对另一列进行排序。

SQL ORDER BY示例

按照某1列进行排序

按照单品的价格升序进行排序

1
2
3
4
5
SELECT
itemid, listprice, attr1
FROM
item
ORDER BY listprice

根据多列进行排序

先按单位成本(unitcost)降序排列,再按价格(listprice)升序进行排列

1
2
3
4
5
SELECT
itemid, listprice, attr1
FROM
item
ORDER BY unitcost DESC, listprice ASC

带表达式的 ORDER BY排序

ORDER BY子句也可以是表达式。
例如,可以使用CONCAT字符串函数创建员工的全名,然后按照全名对结果集进行排序:

1
2
3
4
5
SELECT
CONCAT(lastname, ',', firstname) fullname
FROM
employees
ORDER BY CONCAT(lastname, ',', firstname);

列别名用于对结果集的输出进行格式化。
您也可以在ORDER BY子句中使用列别名,而不是使用表达式。查询结果是一样的:

1
2
3
4
5
SELECT
CONCAT(lastname, ',', firstname) fullname
FROM
employees
ORDER BY fullname;

使用列的编号进行排序

SELECT子句中会根据列的位置从1、2、3开始分配一个编号。
ORDER BY中可以使用这个编号来对结果集进行排序。

例如,根据第3列unitcost进行排序

1
2
3
4
5
SELECT
itemid, listprice,unitcost, attr1
FROM
item
ORDER BY 3;


原文链接:https://codingdict.com/