--order by子句语法
select <列名1>, <列名2>, <列名3>, ……
from <表名>
order by <排序基准列1>, <排序基准列2>, ……
1、不论何种情况,order by 子句都需要写在select语句的末尾,order by 子句中书写的列名称为排序键
2、子句的书写顺序:1. select子句 → 2. from子句 → 3. where 子句 → 4. group by 子句 →5. having子句 → 6. order by子句
3、未指定order by子句中排列顺序时会默认使用升序进行排列,asc也是升序排序
4、需要进行降序排列时,在列名后面使用desc关键字
select <列名1>, <列名2>, <列名3>, ……
from <表名>
order by <排序基准列1> desc;
5、在order by 子句中可以同时指定多个排序键。规则是优先使用左侧的键,如果该列存在相同值的话,再接着参考右侧的键。当然,也可以同时使用3 个以上的排序键。
6、使用含有null 的列作为排序键时,null会在结果的开头或末尾汇总显示。究竟是在开头显示还是在末尾显示,并没有特殊规定,某些DBMS中可以指定null 在开头或末尾显示。
7、在order by 子句中却是允许使用别名,select 子句的执行顺序在group by 子句之后,order by子句之前。因此,在执行group by 子句时,select 语句中定义的别名无法被识别。对于在select 子句之后执行的order by 子句来说,就没有这样的问题了。
8、order by 子句中也可以使用存在于表中、但并不包含在select子句之中的列和使用聚合函数。
--例子1:
select product_name, sale_price, purchase_price
from product
order by product_id;
--例子2:
select product_type, count(*)
from Product
group by product_type
order by count(*);