首页 > 数据库 >mysql 语句执行顺序

mysql 语句执行顺序

时间:2022-10-10 11:35:04浏览次数:47  
标签:语句 顺序 group mysql 子句 join 筛选 select

mysql 语句执行顺序

from
join on
where
group by
having
select
order by
limit

解释

from :表连接
left join on :表连接,并筛选(左表全有,右表符合条件有)
where :连接后筛选
group by :连接筛选后进行分组(有分组则所有聚合函数都是以每一个小组为计算单位)
having : 筛选组(一般用聚合函数)
select :得到连接-筛选-分组-筛选后的字段(可有聚合函数处理字段)
order by :排序
limit :限制条数

每个子句执行后都会产生一个中间结果,供接下来的子句使用,如果不存在某个子句,就跳过
注意:

第三步:如果是outer join 那么这一步就将添加外部行,left outer jion 就把左表在第二步中过滤的添加进来,如果是right outer join 那么就将右表在第二步中过滤掉的行添加进来,这样生成虚拟表 vt3 。

第四步:如果 from 子句中的表数目多余两个表,那么就将vt3和第三个表连接从而计算笛卡尔乘积,生成虚拟表,该过程就是一个重复1-3的步骤,最终得到一个新的虚拟表 vt3。 

第六步:group by 子句将中的唯一的值组合成为一组,得到虚拟表vt5。
       如果应用了group by,那么后面的所有步骤都只能得到的vt5的列或者是聚合函数(count、sum、avg等)。
       原因在于最终的结果集中只为每个组包含一行。这一点请牢记。 

注:group by 语句这一步开始才可以使用select中的别名,后面的语句也可以了,他返回的是一个游标,而不是一个表,所以在where中不可以使用select中的别名,而having却可以使用,感谢网友 zyt1369 提出这个问题)

标签:语句,顺序,group,mysql,子句,join,筛选,select
From: https://www.cnblogs.com/hzk20220818/p/16775045.html

相关文章

  • MySQL列的数据类型讲解
    数值tinyint十分小的数据1个字节smallint较小的数据2个字节mediumint中等大小的数据3个字节int标准的整数4个字节常用的intbigint较......
  • sandbox 快速部署mysql
    MySQLSandboxisatoolthatinstallsoneormoreMySQLserverswithinseconds,easily,securely,andwithfullcontrol.Onceinstalled,thesandboxiseasilyus......
  • mysql 分组查询--group by--having
    分组查询groupby字段将查询结果按照某个字段进行分组,字段值相同的为一组其实就是按照某一列进行分类分组查询的作用单独使用分组没有任何用处,因为单独只分组不进行......
  • 如何优雅的备份MySQL数据?看这篇文章就够了
    大家好,我是一灯,今天一块学习一下如何优雅安全的备份MySQL数据?1.为什么要备份数据先说一下为什么需要备份MySQL数据?一句话总结就是:为了保证数据的安全性。如果我们把数......
  • 根据uid进行分组后,然后组内,按照mon进行升序,怎么写语句呢?
    大家好,我是皮皮。一、前言前几天在Python白银交流群【空翼】问了一个Pandas处理的问题,提问截图如下:下面是他的数据截图:二、实现过程这里他自己一开始想到是用groupb......
  • MySQL入门及面试
    MySQL一、基础1.SQL语句入门select*fromAinnerjoinBonB.id=A.idgroupbyB.idhavingB.id>10whereB.oid!=5orderbyB.iddesclimit5;如上,瞎写了一......
  • podman安装mysql容器
    前言mysql如果正式安装,卸载起来比较麻烦。如果是自己测试用的话,可以用podman拉取一个镜像来使用。这里使用的是mysql5.7版本,对应的docker镜像是mysql:5.7(如果拉取较慢......
  • ruby 操作mysql crud
    ruby的语法真的是太优雅了!require'mysql2'#配置数据源,连接musqlclient=Mysql2::Client.new(host:'localhost',username:'root',password:'root',database:'......
  • dotnet core操作Mysql、Redis
    usingSystem;usingMicrosoft.AspNetCore.Hosting;usingMicrosoft.Extensions.Hosting;usingMySql.Data.MySqlClient;namespacedotnet_demo{publicclassProgramcl......
  • 06@流程控制之case语句
    文章目录​​流程控制之case语句​​​​一、语法​​​​二、案例使用​​​​案例1:(用户登录判断脚本)​​​​案例2:(nginx启动脚本)​​​​案例3:(nginx启动脚本)​​​​案例4......