ORDER BY
- 单个列排序
- 多个列排序
- 按列位置排序
- 指定排序方向 ASC/DESC
- 指定多个列进行排序
单个列排序
为了明确地排序 SELECT 语句检索出的数据,可使用 ORDER BY 子句。ORDER BY 子句取一个或多个列的名字,据此对输出进行排序。
例: DBMS 软件对 prod_name 列以字母顺序排序数据:
SELECT prod_name
FROM Products
ORDER BY prod_name;
【1】ORDER BY 子句的位置通常是在 SQL 查询语句的末尾,用于对查询结果进行排序。
多个列排序
常用多个列排序比如要显示雇员的名单,希望首先按照姓进行排序,然后再对姓的排序结果按照名进行排序;
SELECT *
FROM Students
ORDER BY LastName, FirstName;
按列位置排序
除了上述我们的排序方法外,我们还可以通过按照列位置进行排序;
SELECT prod_id, prod_price, prod_name
FROM Products
ORDER BY 2,3;
# ORDER BY 2,3 等同于 ORDER BY prod_price, prod_name
【1】尽量减少使用 2,3 的写法,虽然简便,但是极容易引发错误;
指定排序方向 ASC/DESC
跳出 SQL 排序,我们知道,排序不限于顺序排序,还有倒序排序等;
在 SQL 中,ORDER BY 默认为顺序排序,即 ASC;同时我们可以设置倒序排序,即 DESC,示例如下:
SELECT prod_id, prod_price, prod_name
FROM Products
ORDER BY prod_price DESC;
上述代码含义为按照价格的降序排序(价格最高在最前面);
指定多个列进行排序
对 prod_price 列进行降序排序 DESC,对 prod_name 进行升序排序;
SELECT prod_id, prod_price, prod_name
FROM Products
ORDER BY prod_price DESC, prod_name;
【1】如果希望对多个列进行降序排序,那么需要在每一个属性后都加上 DESC 标识;
【2】升序是默认的,所以若不指定 DESC,则 ORDER BY 中属性为升序;
【3】ASC 为 ASCENDING,DESC 为 DESCENDING;
【4】A与a的排序问题需要在具体的DESC中去发掘;