mysql中select语句的执行顺序

执行顺序是什么?

Form

这一阶段读取表的数据,并准备执行后续的操作。如果有多表连接,这一步也会涉及连接操作(INNER JOIN、LEFT JOIN、RIGHT JOIN、CROSS JOIN 等)。

ON

在进行表连接时,使用 ON 关键字指定连接条件。

WHERE

这一阶段对读取的数据应用条件过滤,仅保留满足条件的记录。

GROUP BY

这一阶段对数据进行分组,通常与聚合函数(如 COUNT, SUM, AVG 等)一起使用。

HAVING

这一阶段用于过滤分组后的数据。HAVING 与 WHERE 的区别在于 HAVING 作用于分组后的数据,而 WHERE 作用于分组前的数据。

SELECT

这一阶段选择需要的列。可以包含列名、表达式或聚合函数。

DISTINCT

这一阶段用于去除结果集中重复的行。

ORDER BY

这一阶段对结果进行排序。可以按一个或多个列进行升序(ASC)或降序(DESC)排序。

LIMIT

这一阶段用于限制返回的行数。可以用于分页等场景。

                                                                                                               

为什么分组函数不能直接使用在where后面?

select ename,sal from emp where sal > min(sal);//报错。

因为分组函数在使用的时候必须先分组之后才能使用。

where执行的时候,还没有分组。所以where后面不能出现分组函数。

select sum(sal) from emp;

这个没有分组,为啥sum()函数可以用呢?

因为select在group by之后执行。

ON 和 WHERE 子句的执行顺序

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值