MySQL 视频课 · 50 集 / DQL 进阶:分组、排序、分页、综合案例、执行顺序 / P19

第 19 集 / 共 50 · DQL 进阶:分组、排序、分页、综合案例、执行顺序 · 视频 p=19 · 时长 6:36

P19 19. 基础-SQL-DQL-排序查询

讲义 2.6.6 排序查询 p47–48

按主题对应,非逐句切分

来源与核对说明

以同版讲义的公开镜像核对章节与页码(镜像非官方出品);非逐字稿,示例为原创补充。

本页是学习笔记,不等同于视频逐字稿。原声字幕未取得(匿名接口字幕轨为空且需登录,未使用任何账号),也没有逐句讲解记录;讲义只按节与页码对应,切点未逐句确证。

讲义索引:p47–48 · 2.6.6 排序查询 · 切点 notexact

讲义是第三方公开镜像(95 页 PDF),不是官方原件;这里只用它核对章节顺序与页码,不转载正文。

完整来源说明与变更记录 →

看视频,对照阅读:在新标签打开原视频(p=19)

排序看似简单,坑主要在默认方向、NULL 的位置和翻页稳定性。

画面采样只覆盖前半段:最远采样点 3:18 / 全片 6:36;后半段未取得画面,本页后半段相关表述仅依据标题与已采画面,属主题级核实。

复习模式:快速跳知识点(详解在下方各节)

复习顺序:先看“一句话理解”能否复述,再扫步骤,最后做自测;答不出时回到小例与易错。

一句话理解

ORDER BY 决定结果按什么顺序排;不写它,数据库给出的行序没有任何保证。

按这 4 步做

  1. 在查询末尾写 ORDER BY 字段名,默认升序 ASC;要降序就在字段后补 DESC。
  2. 多列排序从左往右生效:第一列相同的行,才用第二列继续分先后。
  3. 排序可以按别名或表达式做,因为这一步发生在结果列确定之后,别名在这里能用。
  4. 需要“稳定的翻页顺序”时,末尾补一个唯一列(如 id)当兜底。

小例

先准备本集练习数据:p19.sql · 练习库说明

SQL 示例
SELECT id, name, salary
FROM employee
ORDER BY salary DESC, id ASC;

【原创演示】仍用那四行练习数据。salary 降序:小陈 12000、小周 10000、小林 8000;小李的 salary 是 NULL,在 MySQL 的降序排序里排在最后。第二列 id 只在薪资相同时才起作用,本例没有并列,所以结果顺序是 3、2、1、4。

易错点

30 秒速记

ORDER BY 列 [ASC|DESC],默认升序;多列从左到右;NULL 升序在前、降序在后;翻页要加唯一列兜底。

自测(2 题,先答再展开)

自测 1:ORDER BY salary DESC, id 里的 id 没写 ASC,为什么也按升序?

ASC 是默认排序方式,省略即升序;只有需要降序时才必须写 DESC。

自测 2:按薪资排序后为什么还要加 id?

薪资相同的行之间没有规定先后,数据库每次返回的顺序可能不同;只有加唯一列,顺序才确定,翻页才不会重复或漏行。

材料与来源

展开材料出处、讲义页码与证据等级
材料类型 / 位置支持了什么
P19 原视频页(BV1Kr4y1i7ru)平台视频页 · P19;采样静帧 t012/t020/t030/t040/t050前半段:DQL 目录页 + “DQL-排序查询 1.语法”页;后半段无采样帧。
MySQL 8.0 Reference:SELECT … ORDER BY官方文档核对多列排序与 NULL 的排序位置,未逐字引用。

已核对前半段画面,后半演示未取得;排序规则的小例为原创补充。前半段指 t012 的 DQL 目录页与 t020 的“DQL-排序查询 1.语法”页(语法行为 SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1, 字段2 排序方式2);采样帧止于 t050≈198s,全片 396s,故讲师后半段的演示 SQL 与查询结果未核实,正文也不引用任何课堂数值。无字幕。

讲义对照:讲义 2.6.6 排序查询 · p47–48(公开镜像;按主题对应,切点 notexact)

  • 画面静帧 5 帧,采样点 0:12–3:18 / 全片 6:36(只用于确认画面主题,不作内容边界)
  • 原声字幕未取得:匿名接口字幕轨为空且需登录,未使用任何账号

等级含义:平台视频页 / 官方文档 / 课件 = 原始材料;二手整理 = 参考;推断 = 未经核实。站内补充的解释与练习会在此说明。

下载本集 Markdown