MySQL查询语句关键字执行的优先级问题

系列文章目录

第一章 MySQL概述
第二章 MySQL的常用命令
第三章 MySQL中的常用数据类型
第四章 MySQL单行处理函数
第五章 MySQL多行处理函数


前言

前五章我们学习了查询语句的部分常用关键字,并且学会了用它们进行简单的查询操作,那么我们是否应该思考一个问题:select语句只按照我们所写的顺序,从左到右执行的吗?带着这个问题,我们可以用代码来验证它。


select语句的执行顺序是依次从左到右吗?
我们可以对于下表输入select ename, sal from emp where sal >min(sal);来验证一下
在这里插入图片描述
从这个语句我们可以看出,这是一条查询并输出“比最低sal值高的ename和sal”的语句,然而输出结果为:
在这里插入图片描述

提示组函数使用无效,也就是说,min(sal)在这里是无效的,这是因为我们在第五章说过,组函数必须要先使用group by函数分组后,才能使用,若没有使用group by进行分组,则默认以整张表格作为一组;也就是说在这个语句中,是默认整张表为一组的,既然默认整张表为一组,为什么组函数还是无效呢?

这是因为elect语句的执行顺序并不是按照我们写的顺序从左到右执行的,因为sql语言毕竟是老外发明的东西,语句顺序也是按照他们的习惯,老外的语言跟汉语的语序还是有很大的不同的。select语句中实际的执行顺序为:
在这里插入图片描述

从图中我们可以看出,分组函数group by的执行顺序在where之后,也就是说在执行where后面的条件时,group by函数还未被执行,此时还未分组,所以此时无法使用组函数;


总结

以上就是使用组函数需要注意的地方啦,如果您觉得有帮助的话,不妨点个赞再走啊!

评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

马孔多镇长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值