SQL ORDER BY 排序

时间:2018-11-15 17:43:57  来源:igfitidea点击:

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

SQL ORDER BY子句介绍

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

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

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列进行排序

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

SELECT 
    itemid, listprice, attr1
FROM
    item
ORDER BY listprice

根据多列进行排序

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

SELECT 
    itemid, listprice, attr1
FROM
    item
ORDER BY unitcost DESC, listprice ASC

带表达式的 ORDER BY排序

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

SELECT 
    CONCAT(lastname, ',', firstname) fullname
FROM
    employees
ORDER BY CONCAT(lastname, ',', firstname);

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

SELECT 
    CONCAT(lastname, ',', firstname) fullname
FROM
    employees
ORDER BY fullname;

使用列的编号进行排序

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

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

SELECT 
    itemid, listprice,unitcost, attr1
FROM
    item
ORDER BY 3;