sql语句执行顺序问题

sql语句执行顺序问题

老师您好,我最近在写sql的时候,对sql执行顺序不是很明白,比如下面这行查询语句

select date_format(event_time, '%Y-%m') as month, sum(total_amount) as GVM
from tb_order_overall
where year(event_time) = 2021 and (status = 1 or status = 0) 
group by month
having GVM > 100000
order by GVM

我在网上查了一下,sql语句的执行顺序是from -> where -> group by ->  having -> select -> order by 

我这里不太明白的是,因为 group by 和 having 语句是在select语句之前,但是 group by 和 having 语句里用了select中起的别名 month 和 GVM,我不知道为什么这个时候可以使用别名呢?如果按照执行过程,这时候应该表里还没有这个别名啊


麻烦老师解答一下了

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
徐老师 2022-07-16 10:41:32

group by 执行之后,就会根据SQL中的聚合函数(sum)进行计算了,这样GVM就计算出来了

  • 提问者 江景又妍和 #1

    那group by后面的month怎么提前知道的呢

    2022-07-16 10:47:07
  • 徐老师 回复 提问者 江景又妍和 #2

    group by 后面是可以识别select语句中定义的别名、以及表中的别名的,如果想进一步研究就需要去研究sql解析引擎了的底层解析步骤了

    2022-07-16 12:22:50
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师