MySQL查询语句的执行顺序

2023-11-02

SQL语句执行顺序:FROM、ON 、JOIN、WHERE、GROUP BY、AGG_FUNC、WITH、HAVING、SELECT、UNION、DISTINCT 、ORDER BY、LIMIT。

 

 

在实际执行过程中,每个步骤都会为下一个步骤生成一个虚拟表,这个虚拟表将作为下一个执行步骤的数据。

1、FROM:选择FROM后面跟的表,产生虚拟表1。

2、ON:ON是JOIN的连接条件,符合连接条件的行会被记录在虚拟表2中。

3、JOIN:如果指定了LEFT JOIN,那么保留表中未匹配的行就会作为外部行添加到虚拟表2中,产生虚拟表3。如果有多个JOIN链接,会重复执行步骤1~3,直到处理完所有表。

4、WHERE:对虚拟表3进行WHERE条件过滤,符合条件的记录会被插入到虚拟表4中。

5、GROUP BY:根据GROUP BY子句中的列,对虚拟表4中的记录进行分组操作,产生虚拟表5。

常用的聚合函数:(AVG:返回平均值)、(COUNT:统计数量)、(FIRST:返回第一个记录的值)、(LAST:返回最后一个记录的值)、(MAX: 返回最大值)、(MIN:返回最小值)、(SUM: 返回总和)。

6、WITH 对虚拟表5应用ROLLUP或CUBE选项,生成虚拟表 6。

7、HAVING:对虚拟表6进行HAVING过滤,符合条件的记录会被插入到虚拟表7中。

8、SELECT:SELECT到一步才执行,选择指定的列,插入到虚拟表8中。

9、UNION:UNION连接的两个SELECT查询语句,会重复执行步骤1~8,产生两个虚拟表9,UNION会将这些记录合并到虚拟表10中。

**union会自动压缩多个结果集合中重复的结果,使结果不会有重复行.

**union all 会将所有的结果共全部显示出来,不管是不是重复

10、DISTINCT 将重复的行从虚拟表10中移除,产生虚拟表 11。DISTINCT用来删除重复行,只保留唯一的。

11、ORDER BY: 将虚拟表11中的记录进行排序,虚拟表12。

12、LIMIT:取出指定行的记录,返回结果集。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL查询语句的执行顺序 的相关文章

随机推荐

  • 解决ThinkPad E580因AMD显卡导致系统崩溃的问题

    前言 由于着急解决问题 毕竟是常用电脑 而且现在也没法去修或者换电脑 修不好就真没用的了 所以基本全程没图 最后对问题原因有个猜测 如题 可能是因为AMD显卡相关程序导致的 如果有人知道具体原因请指点一下 对问题原因的猜测依据和文中一部分图
  • 双系统grub引导时,出现error: file '/boot/vmlinuz-xxx-xxx-xxx' not found的解决方法

    晚上本想修改一下grub cfg文件 去掉多余的引导项 没成想出现如题之尴尬局面 一番度娘之后终解决 下面是解决方法 Note 在grub下 注意提示按c进入grub命令行模式 首先需要确定你的ubutun安装到哪个硬盘哪个区 1 1 可以
  • 从零开始搭建物联网平台(三)数模设计

    首先 我们先从数模设计开始 这是一个系统的核心和精髓 决定了系统的架构和扩展控件 ETCloud的数模共有22张表 三个模块 一 用户模块 用户模块主要由企业表 用户表 角色表 权限表构成 1 数据权限 用户共分为三大类 model use
  • 力扣算法题解析

    一 278题 第一个错误的版本 难度 简单 1 题目描述 你是产品经理 目前正在带领一个团队开发新的产品 不幸的是 你的产品的最新版本没有通过质量检测 由于每个版本都是基于之前的版本开发的 所以错误的版本之后的所有版本都是错的 假设你有 n
  • stm32Cubemx:串口的空闲中断和接收中断------stm32f407zgt6

    介绍串口的接收中断与空闲中断 这两种中断都是在串口进行接收时可能会发生的中断 串口接收中断即每当串口完成一次接收之后触发一次中断 在 STM32 中相应的中断处理函数为 USARTx IRQHandler 中断回调函数为 HAL UART
  • 2023数据要素专题研究报告

    数据要素是实际参与社会生产活动的 完成确权的数据资源 数字化的文本 图形等数据经过权属确定后即为数据资产 再经过数据处理 分析后 形成数据产品并参与社会生产经营 对其他生产要素赋能并发挥数据自身价值 完成数据的价值闭环 根据国务院印发的 关
  • Neo4j CQl语句(持续更新)

    1 清空所有数据 MATCH n OPTIONAL MATCH n r DELETE n r 2 删除一个节点及其所有的关系 MATCH r WHERE id r 11 DETACH DELETE r 3 删除一个节点 DELETE 通过属
  • Mac Safari 此连接非私人连接

    1 问题 连接公司vpn的时候 Mac弹出此连接非私人连接 点击访问此网站后输入密码将证书手动设为可信后 又弹出了此连接非私人连接 之后进入了无限循环无论怎样都无法访问该网页 2 解决方案 2 1 点击页面上查看此证书 记住证书名字 可以看
  • 自制GUI

    包含了 sqlmap GUI Xray GUI dirmap GUI
  • selenium测试框架快速搭建(UI自动化测试)

    一 介绍 selenium目前主流的web自动化测试框架 支持多种编程语言Java pythan go js等 selenium 提供一系列的api 供我们使用 因此在web测试时我们要点页面中的某一个按钮 那么我们只需要获取页面 然后根据
  • js控制获得焦点与失去焦点样式

    function focusInput focusClass normalClass var elements document getElementsByTagName input for var i 0 i lt elements le
  • Vue项目保存代码之后页面自动更新

    Vue项目保存代码之后页面自动更新 想要在代码中保存之后 页面自动刷新 命令行敲如下代码 npm install webpack dev server 下载了这个东西就不用每次都手动刷新了 我也不知道这个是干嘛的 留在以后研究研究
  • Chromium OS autotest

    autotest三种主要测试手段 直接调用系统命令 相当于直接运行shell命令 通过dbus进行method call 通过加载插件到browser的方式 运行js代码 以js代码来调用C 方法 通过extension来运行js代码 目的
  • XSS闯关——第五关:level5

    第五关 level5 输入语句测试 gt 观察源代码发现字符被替换 把部分字符换成大写尝试 gt 一样的结果 采用html事件方法 失败 同样是字符被替换 使用伪链接方式假造一个超链接尝试 gt a href link a 点击后执行脚本
  • Laravel Collection 常用方法(1)

    我的个人博客 逐步前行STEP 1 first 返回集合第一个通过指定测试的元素 collect 1 2 3 4 gt first 1 collect 1 2 3 4 gt first function value key return v
  • 深度学习deep learning

    一 简介 深度学习是包含多个隐层的机器学习模型 核心是基于训练的方式 从海量数据中挖掘有用信息 实现分类与预测 早期的深度学习模型 编码器 循环神经网络 深度置信网络 卷积神经网络 衍生模型 堆叠降噪自编码器 稀疏自编码器 降噪自编码器 深
  • mysql 集成测试_使用Go进行集成测试的MySQL Docker容器

    使用Go进行集成测试的MySQL Docker容器 原文链接 https itnext io mysql docker container for integration testing using go f784b70a03b 作者 Mi
  • 【Linux】在Xilinx平台上实现UVC Gadget(2)- 解决dwc3驱动bug

    Linux 在Xilinx平台上实现UVC Gadget 2 解决dwc3驱动bug 一 bug描述 二 具体修改方法 1 找到内核源码位置并复制到其他目录 2 Petalinux里面设置使用自定义内核源码 1 选第2个Linux Comp
  • 数列分段

    描述 对于给定的一个长度为N的正整数数列A i 现要将其分成M M N 段 并要求每段连续 且每段和的最大值最小 关于最大值最小 例如一数列4 2 4 5 1要分成3段 将其如下分段 4 2 4 5 1 第一段和为6 第2段和为9 第3段和
  • MySQL查询语句的执行顺序

    SQL语句执行顺序 FROM ON JOIN WHERE GROUP BY AGG FUNC WITH HAVING SELECT UNION DISTINCT ORDER BY LIMIT 在实际执行过程中 每个步骤都会为下一个步骤生成一