SQL执行顺序

SQL执行顺序

  1. from
  2. join
  3. on
  4. where
  5. group by(开始使用select中的别名,后面的语句中都可以使用)
  6. avg,sum等
  7. having
  8. select
  9. distinct
  10. order by
  11. limit

执行语句都是由from开始的,当前步骤会为下一步骤生成一个虚拟表,这个虚拟表作为下个执行步骤的输入。

mysql的执行顺序

1、select语句的定义

一个select子句可以包含以下几个部分,顺序固定,例如group by子句不会位于where子句前面。

<SELECT clause> [<FROM clause>] [<WHERE clause>] [<GROUP BY clause>] [<HAVING clause>] [<ORDER BY clause>] [<LIMIT clause>] 

2、查询语句的执行顺序

执行顺序:

开始->from->where->groupby->having->order by->select->limit->最终结果

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

例子:

select 考生姓名, max(总成绩) as max总成绩 
 
from tb_Grade 
 
where 考生姓名 is not null 
 
group by 考生姓名 
 
having max(总成绩) > 600 
 
order by max总成绩 

在上面示例中的SQL执行顺序如下:
(1)首先执行from子句,从tb_Grade表组装数据源的数据 。
(2)执行where子句,筛选tb_Grade表中所有数据不为NULL的数据。
(3)执行GROUP BY 子句,把tb_Grade表按"学生姓名"列进行分组。
(4)计算max()聚集函数,按“总成绩”求出总成绩中最大的数值。
(5)执行having子句,筛选课程总成绩大于600分。
(6)执行order by子句,把最后的结果按照“Max成绩”进行排序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值