查询排列的顺序是随机的。
通过ORDER BY 子句来明确指定排列顺序
SELECT <列名1>,<列名2>,<列名3>,......
FROM <表名>
ORDER BY <排序基准列1>,<排序基准列2>,......
ORDER BY子句中书写的列名称为排序键
子句的书写顺序
1.SELECT -->2.FROM -->3.WHERE -->4.GROUP BY -->5.HAVING -->ORDER BY
法则3-16
未指定ORDER BY子句中排列顺序时会默认使用升序进行排列
由于ASC和DESC这两个关键字是以列为单位指定的,因此可以同时指定一个列为升序,指定其他列为降序
SELECT product_id, product_name, sale_price, purchase_price
FROM Product
ORDER BY sale_price DESC;
在列名后面使用DESC关键字,升序使用ASC,但是省略该关键字会默认使用升序进行排序。
指定多个排序键
SELECT product_id, product_name, sale_price, purchase_price
FROM Product
ORDER BY sale_price, product_id;
规则是优先使用左侧的键,如果该列存在相同值的话,在接着参考右侧的键。
法则3-17
排序键中包含NULL时,会在开头或末尾进行汇总。
法则3-18
在ORDER BY 子句中可以使用SELECT子句定义的别名
SELECT子句的执行顺序在GROUP BY 子句之后,ORDER BY子句之前
法则3-19
在ORDER BY子句中可以使用SELECT子句中未使用的列和聚合函数
在ORDER BY子句中,还可以使用在SELECT子句中出现的列所对应的编号。
列编号是指SELECT子句中的列按照从做到右的顺序进行排列时所对应的编号(1,2,3,...)
法则3-20
在ORDER BY子句中不要使用列编号