讲授如何使用 SELECT 语句的 ORDER BY 子句,根据需要排序检索 出的数据。
子句(clause) :SQL语句由子句构成,有些子句是必需的,有些则是可选的。一个子 句通常由一个关键字加上所提供的数据组成。
1、排序数据
一般查找数据都是按照一行一行的读取,开始可能还有顺序,如果数据随后进行过更新或删除,之后的数据就会打乱,为了明确地排序用 SELECT 语句检索出的数据,可使用 ORDER BY 子句。 ORDER BY 子句取一个或多个列的名字,据此对输出进行排序。
注意:ORDER BY 子句的位置 在指定一条 ORDER BY 子句时,应该保证它是 SELECT 语句中最后一 条子句。如果它不是最后的子句,将会出现错误消息。
例子:
SELECT
*
FROM
books
ORDER BY
price;
意思就是查询 books 表中全部,结果以 price 升序展示(默认)
2、按多个列排序
经常需要多列进行排序,例如在排序名字时,会根据姓和名进行排序,销售书时会根据价格和数量进行排序。
例子:
SELECT
name,price,sales
FROM
books
ORDER BY
price,sales;
3、按列位置排序
除了能用列名指出排序顺序外,ORDER BY 还支持按相对列位置进行排 序。
例子:
SELECT
name,price,sales
FROM
books
ORDER BY
2,3;
SELECT 清单中指定的是选择列的相对位置而不是列名。 2,3对应的是要查找数据的第二个和第三个(从 1 开始计数),即对应的是 price 和 sales。
4、指定方向排序
数据排序不限于升序排序(从 A到 Z),这只是默认的排序顺序。还可以 使用 ORDER BY 子句进行降序(从 Z到 A)排序。为了进行降序排序, 必须指定关键字。
升序:ASC(ASCENDING)默认排序,一般不写
降序:DESC(DESCENDING )
例子:
SELECT
name,price,sales
FROM
books
ORDER BY
price DESC,
sales ASC;
DESC关键字只应用到直接位于其前面的列名,中间以逗号隔开。例子中对 price 降序排列,而 sales 升序排列(一般不写ASC)
警告:在多个列上降序排序 如果想在多个列上进行降序排序,必须对每一列指定 DESC 关键字。