6、order by 子句 对结果集进行排序

1、order by 子句

根据一个或多个行的值,按升序(默认)降序对结果集进行排序。

语法:

select 字段1  from  表名  order by  字段2 [ASC | DESC];
  • ASC: 升序(默认)
  • DESC: 降序

  字段名2可以是前面检索的字段名1,也可以是其他字段。

2、按多个字段排序

order by 子句中指定多个字段时,字段名之间用逗号(,)隔开,

按照指定列的顺序依次进行排序:

  先按第一列排序,若第一列值相同,则按第二列排序,依此类推。

语法:

SELECT
  select_list
FROM
  table_name
ORDER BY
  sort_expression_1 [ASC | DESC],
  sort_expression_2 [ASC | DESC];
-- ORDER BY 子句首先按 sort_expression_1 对结果集进行排序,然后按 sort_expression_2 对已排序的结果集进行排序。

例如:表 employees 数据如下:

namedepartmentsalary
张三 技术部 9000
李四 市场部 8000
王五 技术部 9000
赵六 市场部 8500
钱七 技术部 8000

先按部门升序,再按工资降序

SELECT * FROM employees
ORDER BY department ASC, salary DESC;

排序过程:

  • 先按照部门排序:
    • 技术部:张三(9000)、王五(9000)、钱七(8000)
    • 市场部:赵六(8500)、李四(8000)
  • 再按照工资排序:
    • 在“技术部”内部,按工资降序:张三 = 王五 > 钱七
      • 若工资相同(张三和王五),则保持原始顺序(或按主键隐式排序,但不可依赖)
    • 在“市场部”内部,按工资降序:赵六 > 李四

结果:

namedepartmentsalary
张三 技术部 9000
王五 技术部 9000
钱七 技术部 8000
赵六 市场部 8500
李四 市场部 8000

3、指定排序方向

检索数据排序默认为升序(asc 关键字,可省略不写),若要进行降序排序,需使用 desc 关键字

语法:

select 字段1  from  表名  order by  字段2  desc,字段3;

排序 asc 或desc 关键字只作用于前置的字段名,若想在多个字段上进行降序排序,必须对每个字段指定 desc 关键字。

4、筛选排序数据

使用 limit 关键字,该关键字位于 order by 之后

语法:

select 字段1  from  表名  order by  字段2 desc limit X,N;
posted @ 2021-03-25 22:23  chao_xiong  阅读(182)  评论(0)    收藏  举报