当前位置: 首页 > article >正文

MySQL-关键字执行顺序

💖简介

MySQL中,SQL查询语句的执行遵循一定的逻辑顺序,即使这些关键字在SQL语句中的物理排列可能有所不同。

🌟语句顺序

(8) SELECT (9) DISTINCT<select_list>
(1) FROM <left_table>
(3) <join_type> JOIN <right_table>
(2) ON <join_condition>
(4) WHERE <where_condition>
(5) GROUP BY <group_by_list>
(6) WITH {CUBE|ROLLUP}
(7) HAVING <having_condition>
(10) ORDER BY <order_by_list>
(11) LIMIT <offset,limit_number>

✨执行顺序

  1. from

from子句中的左表<left_table>和右表<right_table>执行笛卡尔积,得到虚拟表VT1

  1. on

对前面生成的虚拟表VT1进行ON筛选,符合条件的会被记录到虚拟表VT2中。

  1. join

如果是OUT JOIN,那么将保留表中(如左表或者右表)未匹配的行作为外部行添加到虚拟表VT2中,从而产生虚拟表VT3

  1. WHERE

对步骤3产生的虚拟表VT3进行过滤,只有符合条件<where_condition>的记录才会插入新的虚拟表VT4

  1. group by

根据group by子句中的列,对步骤4的记录进行分组操作得到虚拟表VT5

  1. with {CUBE|ROLLUP}

如果指定了ROLLUP选项,将创建一个额外的记录添加到虚拟表VT5的最后,并生成虚拟表VT6

  1. HAVING

对虚拟表VT6进行 HAVING 条件过滤,只有符合的记录才会被插入到虚拟表VT7中;

  1. Select

Select中指定的列从上一步产生的虚拟表中选出,插入虚拟表VT8

  1. Distinct

如果在查询中指定了distinct子句,则会创建一张内存临时表VT9

  1. Order by

根据order by指定的列对上一步输出的虚拟表进行排列,返回新的虚拟表VT10

  1. Limit

选出指定位置开始的指定行数据,生成虚拟表VT11,并返回结果


结果


http://www.kler.cn/a/403812.html

相关文章:

  • css:感觉稍微高级一点的布局
  • 排序算法:直接插入排序,希尔排序,选择排序,快速排序,堆排序,归并排序
  • OpenMMlab导出Mask R-CNN模型并用onnxruntime和tensorrt推理
  • WSL2 ubuntu配置redis
  • PlncRNA-HDeep:使用基于两种编码风格的混合深度学习进行植物长非编码 RNA 预测
  • PHP二维数组排序算法函数
  • 使用element-plus el-table中使用el-image层级冲突table表格会覆盖预览的图片等问题
  • 视频智能分析平台LiteAIServer视频智能分析软件噪声监测算法:检测视频画面噪声的新利器
  • 解决Excel文件流读取数字为时间乱码问题
  • vue中iframe的使用说明
  • 冒泡排序与选择排序
  • 【GNU】反汇编工具objdump
  • 2025蓝桥杯(单片机)备赛--扩展外设之I2C的重要应用--PCF8591(八)
  • python subprocess.run 详解
  • 力扣第58题:最后一个单词的长度
  • AI数字人视频小程序:引领未来互动新潮流
  • golang通用后台管理系统10(退出登录,注销token)
  • 程序里sendStringParametersAsUnicode=true的配置导致sql server cpu使用率高问题处理
  • 一、Docker 安装集
  • 脸书Facebook 多账号在同一设备登录且防关联的攻略!
  • Win11 24H2新BUG或影响30%CPU性能,修复方法在这里
  • k8s资源对象管理
  • Gin 框架中的表单处理与数据绑定
  • 第十九天 决策树与随机森林
  • Python循环请求接口
  • 高效协作:前后端合作规范与应对策略