登录
首页 >  数据库 >  MySQL

SQL中select与having子句的执行顺序:到底谁先执行?

时间:2024-12-14 15:31:04 192浏览 收藏

今日不肯埋头,明日何以抬头!每日一句努力自己的话哈哈~哈喽,今天我将给大家带来一篇《SQL中select与having子句的执行顺序:到底谁先执行?》,主要内容是讲解等等,感兴趣的朋友可以收藏或者有更好的建议在评论提出,我都会认真看的!大家一起进步,一起学习!

SQL中select与having子句的执行顺序:到底谁先执行?

sql中select与having子句的执行顺序

sql语句中到底是先执行select子句还是having子句?以如下示例代码为例:

SELECT SUM(num) AS all_num
FROM table
GROUP BY id
HAVING all_num > 50;

传统的说法是先执行having子句后执行select子句,但该说法似乎与本例不符,因为select子句中定义了"sum(num) as all_num",似乎应该先执行select子句才能获取用于having比较的all_num。

解答:

实际上,select子句在该例中的作用并不是操作数据,而是对having子句筛选后的结果进行选择性显示。 sql语句的执行顺序如下:

  1. group by 分组:根据id列将数据分组。
  2. sum() 聚合函数计算:计算每个组的num的总和,生成中间结果。
  3. having 子句筛选:根据all_num过滤中间结果,保留总和大于50的组。
  4. select 子句选择:从满足having条件的组中选择性地展示结果,即展示满足条件的组和对应的all_num。

因此,select子句并非在having之前执行,而是对其筛选后的结果进行选择性显示。所以,本例中先执行having再执行select的说法是正确的。

本篇关于《SQL中select与having子句的执行顺序:到底谁先执行?》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于数据库的相关知识,请关注golang学习网公众号!

相关阅读
更多>
最新阅读
更多>
课程推荐
更多>