拍讯查询操作查询列表中的字段,控制其按照升序(ascend)或降序(descend)输出。基本语法如下
select
查询列表
from
表名
[where 字句]
order by 排序目标 asc|desc
排序或降序缺省状态下,默认升序。排序目标有单列表字段、多列表字段、表达式、函数,其示例如下。
order by字段一般是对查询结果进行最后的排序操作,是输出查询结果的最后一次操作,因此其位置一般应在其他sql子句的后面。在mysql中,order by字句只在limit字句前面,余下都是在其他字句后面。
-
单列表字段
SELECT last_name FROM employees ORDER BY last_name //升序排序,此时acs可以缺省 SELECT last_name FROM employees ORDER BY last_name DESC //降序排序
-
多列表字段。多列情况下,order by后的字段顺序影响排序逻辑。假设按照 (A DESC,B ASC)排序,mysql先对前面的字段A排序,然后对排序结果中字段A相同的数据行按照字段B排序,随后输出结果。
注意位置靠后的排序字段只对位置在前的排序字段的相同数据行排序,因此除第一个排序字段外,其后的排序操作较少。
SELECT LENGTH(last_name) AS 长度 ,salary FROM employees ORDER BY last_name DESC,salary ASC -- 先对长度降序排序,再对结果中长度相同的行按照salary升序排序。
-
表达式。若对表达式起别名,别名也可以作为排序目标,作用和表达式相同。
SELECT LENGTH(last_name) AS 长度 FROM employees ORDER BY LENGTH(last_name) DESC -- 表达式作为排序目标 # 上下两个排序结果一样 SELECT LENGTH(last_name) AS 长度 FROM employees ORDER BY 长度 DESC --表达式的别名作为排序目标
-
函数。
函数也可认为表达式的一种。实例参考表达式。