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;