Mysql 基础(十一) 对查询结果进行排序

对查询结果进行排序

学习重点

  • ORDER BY 子句对查询结果进行排序

  • 在 ORDER BY 子句中列名的后面使用关键字 ASC 可以进行升序排列,使用 DESC 关键字可以降序排列

  • ORDER BY 子句中可以指定多个排序键

  • 排序键中包含 NULL 时,会在开头或者末尾进行汇总

  • ORDER BY 子句中可以使用 SELECT 子句中定义的列的别名

  • ORDER BY 子句中可以使用 SELECT 子句中未出现的列或者聚合函数

  • ORDER BY 子句中不能使用列的编号

ORDER BY 子句

基本语法


SELECT <列名1>,<列名2>,<列名3>....
FROM <表名>
ORDER BY <排序基准列1>,<排序基准列2>

子句的书写顺序

SELECT 子句-> FROM 子句 -> WHERE 子句 -> GROUP BY 子句 -> HAVING 子句 -> ORDER BY 子句

ORDER BY 通常写在 SELECT 语句的末尾

指定升序或者降序

与上述示例相反 想要按照销售单价由高到低,也就是降序排列时,在列的名字后面使用 DESC 关键字


SELECT product_id,product_name,sale_price,purchase_price

FROM product

ORDER BY sale_price DESC;
  • 未指定 ORDER BY 子句中排列顺序会默认以升序进行排列

指定多个排序键

  • 当多个排序 他优先使用最左侧的键,如果该列存在相同的值 在参考右边的值

SELECT product_id,product_name,sale_price,purchase_price

FROM product

ORDER BY sale_price,product_id;

这样的话 它是先按照 sale_price 排序 如果相等的话他在按照 product_id 排序

NULL 的顺序

当排序的键存在 NULL 值的时候,Mysql 一般都会在结果的开头或者末尾汇总


SELECT product_id, product_name, sale_price, purchase_price
FROM Product
ORDER BY purchase_price;
  • 结果,NULL 结果不在头就在尾
product_id product_name sale_price purchase_price
0002 打孔器 500 320
0001 T 恤衫 1000 500
0007 擦菜板 880 790
0003 运动 T 恤 4000 2800
0004 菜刀 3000 2800
0005 高压锅 6800 5000
0006 叉子 500
0008 圆珠笔 100

在排序中使用显示用的别名

  • GROUP BY 不能使用别名 ORDER BY 可以使用别名

SELECT product_id AS id, product_name, sale_price AS sp, purchase
_price
FROM Product
ORDER BY sp, id;
  • 结果
id product_name sp purchase_price
0008 圆珠笔 100 NULL
0002 打孔器 500 320
0006 叉子 500 NULL
0007 擦菜板 880 790
0001 T 恤衫 1000 500
0009 筷子 2800 2800
0004 菜刀 3000 2800
0003 运动 T 恤 4000 2800
0005 高压锅 6800 5000

ORDER BY 子句中可以使用不查询的列和聚合函数

Order BY 子句中也可以使用存在于表中,但并不包含在 select 子句中的列


SELECT product_name, sale_price, purchase_price
FROM Product
ORDER BY product_id;
  • 也可以使用聚合函数

SELECT product_type, COUNT(*) FROM Product GROUP BY product_type
ORDER BY COUNT(*);

文章作者: 雾烟云
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 雾烟云 !
  目录