首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SQL 语句执行顺序

,上面的 SQL ,当 WHERE 子句被执行时,count 这个值尚不存在。...SQL 语句书写顺序如下: SELECT -> FROM -> WHERE -> GROUP BY -> HAVING -> ORDER BY SQL 语句执行顺序如下: FROM -> WHERE...-> GROUP BY -> HAVING -> SELECT -> ORDER BY 其中 SELECT 和 FROM 是必须,其他关键词是可选,这六个关键词执行顺序 与SQL语句书写顺序并不是一样...,而是按照下面的顺序执行 FROM:需要从哪个数据表检索数据 WHERE:过滤表数据 GROUP BY:将上面过滤出数据分组 HAVING:对上面已经分组数据进行过滤 SELECT:查看结果集中哪个列...,或列计算结果 ORDER BY:按照什么样顺序来查看返回数据 所以本文开头所说查询有两种实现 SQL: # 使用 HAVING 过滤分组数据 SELECT id, COUNT(client

3.5K41
您找到你想要的搜索结果了吗?
是的
没有找到

MySQL语句执行顺序

MySQL语句一共分为11步,如下图所标注那样,最先执行总是 FROM操作,最后执行是LIMIT操作。...如果没有在语句中指定某一个子句,那么将会跳过相应步骤。 ? 下面我们来具体分析一下查询处理每一个阶段 FORM: 对FROM左边表和右边表计算笛卡尔积。...,那么就会对上一个join连接产生结果VT3和下一个表重复执行步骤1~3这三个步骤,一直到处理完所有的表为 止。...只有符合记录才会被插入到虚拟表VT4。 GROUP BY: 根据group by子句中列,对VT4记录进行分组操作,产生VT5....SELECT: 执行select操作,选择指定列,插入到虚拟表VT8。 DISTINCT: 对VT8记录进行去重。产生虚拟表VT9.

6.4K100

mysql查询语句执行顺序

Mysql SQL查询处理顺序: (8)select (9)distinct (1)from (3) join <right_table...from,最后执行是limit,每个操作都会产生一个虚拟表,做为下一步输入,这个虚拟表对用户是透明,只有最后一个虚拟表才会返回给用户 (1)from 对和执行笛卡尔积,产生虚拟表VT1 (2)on 对VT1应用on条件过滤,把符合记录放入VT2 (3)join 如果指定了join类型,如 left join、right...join,把相应外部行添加到VT2,形成VT3 如果from中有两个以上表,使用VT3和下一个表再执行一遍前3步,直到处理完所有的表 (4)where 对VT3应用where过滤,把符合<where_condition...(7)having 对VT6应用having过滤,符合记录放入VT7 (8)select 从VT9挑选出目标列,放入VT8 (9)distinct

5.1K50

Hive SQL语句正确执行顺序

关于 sql 语句执行顺序网上有很多资料,但是大多都没进行验证,并且很多都有点小错误,尤其是对于 select 和 group by 执行先后顺序,有说 select 先执行,有说 group by...今天我们通过 explain 来验证下 sql 执行顺序。...在验证之前,先说结论,Hive sql 语句执行顺序如下: from .. where .. join .. on .. select .. group by .. select .. having...,我们看下它在 MR 执行顺序: Map 阶段: 执行 from,进行表查找与加载; 执行 where,注意:sql 语句中 left join 写在 where 之前,但是实际执行执行 where...---- 上面这个执行顺序到底对不对呢,我们可以通过 explain 执行计划来看下,内容过多,我们分阶段来看。 首先看下 sql 语句执行依赖: ?

6.5K52

sql执行顺序优先级是多少_sql执行语句顺序

column ASC/DESC LIMIT count OFFSET COUNT; Jetbrains全家桶1年46,售后保障稳定 FROM 和 JOINs FROM 或 JOIN会第一个执行...总之第一步可以简单理解为确定一个数据源表(含临时表) WHERE 我们确定了数据来源 WHERE 语句就将在这个数据源按要求进行数据筛选,并丢弃不符合要求数据行,所有的筛选col属性 只能来自...AS别名还不能在这个阶段使用,因为可能别名是一个还没执行表达式 GROUP BY 如果你用了 GROUP BY 分组,那GROUP BY 将对之前数据进行分组,统计等,并将是结果集缩小为分组数...ORDER BY 在结果集确定情况下,ORDER BY 对结果做排序。因为SELECT表达式已经执行完了。此时可以用AS别名....LIMIT / OFFSET 最后 LIMIT 和 OFFSET 从排序结果截取部分数据. 加粗样式 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。

94020

SQL语句各个部分执行顺序

http://www.tuicool.com/articles/fERNv2 下面先给出上面的SQL语句执行顺序,然后进行讲解: (8)  select (9)  distinct (11)  top...where Table1.id<4 (5)  group by Table1.id (7)  having Table1.id<3 (10)  order by Table1.id desc 前方序号给出了执行顺序...: (1)from:对Table1和Table2执行笛卡尔积,也就是两个表各种组合,共5*5=25行,生成虚拟表VT1 (2)on:选择VT1那些Table1.id=Table2.id所有行...(6)COUNT:执行聚合函数,选出对应Table1.id行数,生成结果给虚拟表VT5 (7)having:选择VT5Table1.id<3所有结果,给虚拟表VT6 (8)select:选择VT6...(11)top:从游标VC9开始处选择指定行数,这里是1行,生成虚拟表VT10. 经过上面的过程,最终SQL语句将VT10返回给用户使用。

1.8K70

MySQL查询语句执行顺序详解

MySQL优化器会根据内部算法和数据统计信息来决定最佳执行顺序。...以下是MySQL查询语句各个子句实际执行顺序: FROM 子句 JOIN 子句 WHERE 子句 GROUP BY 子句 HAVING 子句 SELECT 子句 DISTINCT 子句 ORDER BY...FROM 子句 执行顺序第一步是确定数据来源。MySQL从指定读取数据。这是查询基础,其他所有操作都基于此数据集。 sql 复制代码 FROM table1 2....SELECT 子句 在经过前面的过滤和分组操作后,MySQL会执行SELECT子句,选择查询结果需要返回列。这时才会真正从数据集中挑选出我们想要字段。...总结 理解MySQL查询语句执行顺序有助于编写更高效查询。通过合理安排各个子句,我们可以更好地控制查询行为和性能。

1200

MySQL逻辑查询语句执行顺序

group_by_list> HAVING ORDER BY LIMIT 二 SELECT语句关键字执行顺序...在这些SQL语句执行过程,都会产生一个虚拟表,用来保存SQL语句执行结果(这是重点),我现在就来跟踪这个虚拟表变化,得到最终查询结果过程,来分析整个SQL逻辑查询执行顺序和过程。...执行FROM语句 第一步,执行FROM语句。我们首先需要知道最开始从哪个表开始,这就是FROM告诉我们。...我们执行测试语句SELECT a.customer_id, COUNT(b.order_id) as total_orders,从虚拟表VT6选择出我们需要内容。...执行ORDER BY子句 对虚拟表内容按照指定列进行排序,然后返回一个新虚拟表,我们执行测试SQL语句ORDER BY total_orders DESC,就会得到以下内容: +------

3.8K20

SQL逻辑查询语句执行顺序

group_by_list> HAVING ORDER BY LIMIT 二 SELECT语句关键字执行顺序...在这些SQL语句执行过程,都会产生一个虚拟表,用来保存SQL语句执行结果(这是重点),我现在就来跟踪这个虚拟表变化,得到最终查询结果过程,来分析整个SQL逻辑查询执行顺序和过程。...执行FROM语句 第一步,执行FROM语句。我们首先需要知道最开始从哪个表开始,这就是FROM告诉我们。...我们执行测试语句SELECT a.customer_id, COUNT(b.order_id) as total_orders,从虚拟表VT6选择出我们需要内容。...执行ORDER BY子句 对虚拟表内容按照指定列进行排序,然后返回一个新虚拟表,我们执行测试SQL语句ORDER BY total_orders DESC,就会得到以下内容: +------

4.1K50

django执行原生sql_mysql语句执行顺序

大家好,又见面了,我是你们朋友全栈君。...前言 Django在查询数据时,大多数查询都能使用ORM提供API方法,但对于一些复杂查询可能难以使用ORMAPI方法实现,因此Django引入了SQL语句执行方法,有以下三种执行方式 extra...raw:执行原始SQL并返回模型实例对象。...execute:直接执行自定义SQL 以上3种方式,这里只介绍raw方式,用最多,也最推荐使用 raw 只能实现数据查询操作,并且要依靠模型对象,在Pycharm里打开raw源码,如下图所示,它一共定义了...4个参数,每个参数如下: raw_query:SQL语句 params:如果raw_query设置字符串格式化%s,那么该参数为raw_query提供数值 translations:为查询字段设置别名

3.2K10

多个if-else语句执行顺序、if-else与if-else if-else不同执行顺序、switch执行顺序

参考链接: java if-else 在Java多个 if-else 之间执行顺序有什么区别呢? ...false,则输出test1为100         }  一、在代码,存在两个 if-else 语句 ,程序执行时他们相互之间是独立,互不干扰;  二、这两个 if - else 执行顺序为...语句了 ;  2、当第一个 if - else 结束后,执行顺序就到 第二个 if - else 语句,和第一个 if - else 一样,先判断语句 if (test11 < 1) 中表达式值,当表达式...语句是:  语句中有多个条件,每一个条件控制自己一个分支语句语句执行时,先从第一个 if ( ) 表达式开始判断,当表达式中值为 true 则执行该 { } 若干语句,并结束当前整个 if -...那么 if-else 与 if-else if-else之间不同执行顺序是:  对于 if - else 语句,系统程序只会进行一次表达式判断,当表达式值为 true 则执行其 { } 若干语句

3.5K00

sql语句执行顺序以及流程(详细掌握)

---- 程序员对sql语句执行顺序透彻掌握,是避免编程各种bug和错误,歧义语句不二法则。...-----------------来自小马哥故事 ---- SQL Select 语句完整执行顺序: 1、from 子句组装来自不同数据源数据; 2、where 子句基于指定条件对记录行进行筛选...; 3、group by 子句将数据划分为多个分组; 4、使用聚集函数进行计算; 5、使用 having 子句筛选分组; 6、计算所有的表达式; 7、select 字段; 8、使用 order...SQL 语言不同于其他编程语言最明显特征是处理代码顺序。 在大多数据库语言中,代码按编码顺序被处理。但在 SQL 语句中,第一个被处理子句式 FROM,而不是第一出现 SELECT。...9、 DISTINCT:将重复行从 VT8 删除,产品 VT9。 10、 ORDER BY:将 VT9 行按 ORDER BY 子句中列列表顺序,生成一个游标(VC10)。

24.3K55

关于sql和MySQL语句执行顺序(必看!!!)

一、sql执行顺序 (1)from (3) join (2) on (4) where (5)group by(开始使用select别名,后面的语句中都可以使用) (6) avg,sum...(7)having (8) select (9) distinct (10) order by 从这个顺序我们不难发现,所有的 查询语句都是从from开始执行,在执行过程,每个步骤都会为下一个步骤生成一个虚拟表...二、mysql执行顺序 SELECT语句定义 一个完成SELECT语句包含可选几个子句。...SELECT语句执行顺序 SELECT语句中子句执行顺序与SELECT语句中子句输入顺序是不一样,所以并不是从SELECT子句开始执行,而是按照下面的顺序执行: 开始->FROM子句->WHERE...考生姓名 is not null group by 考生姓名 having max(总成绩) > 600 order by max总成绩 在上面的示例 SQL 语句执行顺序如下:

2.9K40

关于sql和MySQL语句执行顺序(必看!!!)

目前还在查看,但是在查阅资料时发现了一些有益知识,给大家分享一下,就是关于sql以及MySQL语句执行顺序: sql和mysql执行顺序,发现内部机制是一样。最大区别是在别名引用上。...一、sql执行顺序 from join on where group by(开始使用select别名,后面的语句中都可以使用) avg,sum…....having select distinct order by limit 从这个顺序我们不难发现,所有的 查询语句都是从from开始执行,在执行过程,每个步骤都会为下一个步骤生成一个虚拟表...二、mysql执行顺序 1、SELECT语句定义 一个完成SELECT语句包含可选几个子句。...2、SELECT语句执行顺序 SELECT语句中子句执行顺序与SELECT语句中子句输入顺序是不一样,所以并不是从SELECT子句开始执行,而是按照下面的顺序执行: 开始->FROM子句-

1.5K30

SQL语句执行顺序是什么样

[] [] 先给出SQL语句执行顺序结论,后通过案例分析: 最先执行from tab; where语句是对条件加以限定; 执行分组语句group...执行 where子句, 筛选 emp 表ename数据不为 null 数据 。 执行 group by 子句, 把 emp 表按 “deptno” 进行分组。...执行 avg(sal) 分组函数, 按分组计算平均工资(sal)数值。 (常用聚合函数有max,min, count,sum,聚合函数执行在group by之后,having之前。...如果在where写聚合函数,就会出错。) 执行 having 子句, 筛选平均薪资大于2000执行select选出要查找字段,如果全选可以select *。...执行order by 排序语句。order by语句在最后执行,只有select选出要查找字段,才能进行排序。 limit是SQL语句执行最后一个环节。

58010

关于sql和MySQL语句执行顺序(必看)「建议收藏」

一、sql执行顺序 from on join where group by(开始使用select别名,后面的语句中都可以使用) avg,sum…....having select distinct order by limit 从这个顺序我们不难发现,所有的 查询语句都是从from开始执行,在执行过程,每个步骤都会为下一个步骤生成一个虚拟表...第二步:接下来便是应用on筛选器,on 逻辑表达式将应用到 vt1 各个行,筛选出满足on逻辑表达式行,生成虚拟表 vt2 。...二、mysql执行顺序 1、SELECT语句定义 一个完成SELECT语句包含可选几个子句。...2、SELECT语句执行顺序 SELECT语句中子句执行顺序与SELECT语句中子句输入顺序是不一样,所以并不是从SELECT子句开始执行,而是按照下面的顺序执行: 开始->FROM子句-

1.3K10
领券