-
2022-03-18 20:55:54
关键字是按照如下顺序进行执行的:Where, Group By, Having, Order by。
- FROM
- WHERE (先过滤单表/视图/结果集,再JOIN)
- GROUP BY
- HAVING (WHERE过滤的是行,HAVING过滤的是组,所以在GROUP之后)
- ORDER BY
更多相关内容 -
SQL各关键字执行顺序(MySQL)
2021-12-02 17:05:58首先给出SQL各关键字的执行顺序,最后再给出说明; 2 上干货 (8)SELECT(9)DISTINCT <select_list> (1)FROM <left_table> (3)<join_type> JOIN <right_table> (2)ON <join_...1前言
首先给出SQL各关键字的执行顺序,最后再给出说明;
2 上干货
(8)SELECT(9)DISTINCT <select_list> (1)FROM <left_table> (3)<join_type> JOIN <right_table> (2)ON <join_condition> (4)WHERE <where_condition> (5)GROUP BY <grout_by_list> (6)WITH {CUTE|ROLLUP} (7)HAVING <having_condition> (10)ORDER BY <order_by_list> (11)LIMIT <limit_number>
解释说明:每步关键字执行的结果都会形成一个虚表,编号大的关键字执行的动作都是在编号小的关键字执行结果所得的虚表上进行(或者说编号大的关键字处理的对象是编号小的关键执行过后得到的虚表),以此类推。
-
sql关键字组合顺序以及执行顺序
2022-04-30 16:16:23sql中关键字执行顺序以及执行顺序可以说是基本中的基本了,也是很简单的,其实也不是不需要额外单独拎出来写的,自己脑子里想想也是能想明白的。hhhh。 sql关键字组合顺序以及执行顺序 在这里博客随便写个sql select...前言
sql中关键字执行顺序以及执行顺序可以说是基本中的基本了,也是很简单的,其实也不是不需要额外单独拎出来写的,自己脑子里想想也是能想明白的。hhhh。
sql关键字组合顺序以及执行顺序在这里博客随便写个sql select job,sum(sal) sumsal from wages_table where data_date = date '2022-04-30' group by job having sumsql order by sumsql 书写顺序显而易见了。但是程序的执行顺序呢 先from查询这张表在执行where过滤掉不需要的数据,再group by分组,分组后再通过聚合函数进行计算,然后通过having对分组后的数据再进行过滤,过滤后执行select等到数据都好了后再通过order by进行排序。 整体顺序为: from where group by sum having select order by
-
SQL关键字的执行顺序
2018-04-23 15:36:54纸上得来终觉浅1.这样一个问题,作为一个开发人员需要掌握数据库的哪些东西? 在开发中涉及到数据库,基本上...学习下面几点:1)Mysql的执行顺序,这个是写sql的核心,之前遇到的一些错误就是因为对其不了解;2)如何...纸上得来终觉浅
1.这样一个问题,作为一个开发人员需要掌握数据库的哪些东西? 在开发中涉及到数据库,基本上只用到了sql语句,如何写sql以及对其进行优化就比较重要,那些mysql的厚本书籍针对的是DBA,我们只需要学习其中的sql就可以了。
2.既然会写sql是目标,那么怎么才能写好sql.学习下面几点:
1)Mysql的执行顺序,这个是写sql的核心,之前遇到的一些错误就是因为对其不了解;
2)如何进行多表查询,优化,这个是很重要的部分;
3)sql语句的函数,sql提供的函数方便了很多操作;
3.这篇对Mysql语句执行顺序的学习做了总结:
1)Mysql语法顺序,即当sql中存在下面的关键字时,它们要保持这样的顺序:
- select[distinct]
- from
- join(如left join)
- on
- where
- group by
- having
- union
- order by
- limit
2)Mysql执行顺序,即在执行时sql按照下面的顺序进行执行:
- from
- on
- join
- where
- group by
- having
- select
- distinct
- union
- order by
建立如下表格orders:
注:下面所有语句符合语法顺序(也不可能不符合,因为会报错^_^),只分析其执行顺序:(join和on属于多表查询,放在最后展示)
语句一:
- select a.Customer
- from orders a
- where a.Customer='Bush' or a.Customer = 'Adams'
语句二groupby:groupby要和聚合函数一起使用- select a.Customer,sum(a.OrderPrice)
- from orders a
- where a.Customer='Bush' or a.Customer = 'Adams'
- group by a.Customer
语句三having:
- select a.Customer,sum(a.OrderPrice)
- from orders a
- where a.Customer='Bush' or a.Customer = 'Adams'
- group by a.Customer
- having sum(a.OrderPrice) > 2000
语句四distinct: (为测试,先把数据库中Adams那条记录的OrderPrice改为3000)
- select distinct sum(a.OrderPrice)
- from orders a
- where a.Customer='Bush' or a.Customer = 'Adams' or a.Customer = 'Carter'
- group by a.Customer
- having sum(a.OrderPrice) > 1700
语句五union:完全是对select的结果进行合并(默认去掉重复的记录):
- select distinct sum(a.OrderPrice) As Order1
- from orders a
- where a.Customer='Bush' or a.Customer = 'Adams' or a.Customer = 'Carter'
- group by a.Customer
- having sum(a.OrderPrice) > 1500
- union
- select distinct sum(a.OrderPrice) As Order1
- from orders a
- where a.Customer='Bush' or a.Customer = 'Adams' or a.Customer = 'Carter'
- group by a.Customer
- having sum(a.OrderPrice) > 2000
语句六order by:
- select distinct sum(a.OrderPrice) As order1
- from orders a
- where a.Customer='Bush' or a.Customer = 'Adams' or a.Customer = 'Carter'
- group by a.Customer
- having sum(a.OrderPrice) > 1500
- union
- select distinct sum(a.OrderPrice) As order1
- from orders a
- where a.Customer='Bush' or a.Customer = 'Adams' or a.Customer = 'Carter'
- group by a.Customer
- having sum(a.OrderPrice) > 2000
- order by order1
语句七limit:
- select distinct sum(a.OrderPrice) As order1
- from orders a
- where a.Customer='Bush' or a.Customer = 'Adams' or a.Customer = 'Carter'
- group by a.Customer
- having sum(a.OrderPrice) > 1500
- union
- select distinct sum(a.OrderPrice) As order1
- from orders a
- where a.Customer='Bush' or a.Customer = 'Adams' or a.Customer = 'Carter'
- group by a.Customer
- having sum(a.OrderPrice) > 2000
- order by order1
- limit 1
语句八(上面基本讲完,下面是join 和 on):- select distinct sum(a.OrderPrice) As order1,sum(d.OrderPrice) As order2
- from orders a
- left join (select c.* from Orders c) d
- on a.O_Id = d.O_Id
- where a.Customer='Bush' or a.Customer = 'Adams' or a.Customer = 'Carter'
- group by a.Customer
- having sum(a.OrderPrice) > 1500
- union
- select distinct sum(a.OrderPrice) As order1,sum(e.OrderPrice) As order2
- from orders a
- left join (select c.* from Orders c) e
- on a.O_Id = e.O_Id
- where a.Customer='Bush' or a.Customer = 'Adams' or a.Customer = 'Carter'
- group by a.Customer
- having sum(a.OrderPrice) > 2000
- order by order1
- limit 1
注:
1)使用distinct要写在所有要查询字段的前面,后面有几个字段,就代表修饰几个字段,而不是紧随distinct的字段;
2)group by执行后(有聚合函数),group by后面的字段在结果中一定是唯一的,也就不需要针对这个字段用distinct;
-
SQL关键字的查询执行顺序
2020-08-29 19:53:49上代码 SELECT DISTINCT player_id, player_name, count(*) as num #顺序5 FROM player JOIN team ON player.team_id = team.team_id #顺序1 WHERE height > 1.80 #顺序2 ...上面这段SQL有很多个关键字 -
Mysql 的SQL关键字执行顺序
2021-01-19 00:17:44Mysql 的SQL关键字执行顺序图解执行顺序详解:1. FROM:对FROM子句中前两个表执行笛卡尔积生成虚拟表vt12. ON: 对vt1表应用ON筛选器只有满足 join_condition 为真的行才被插入vt23. OUTER(JOIN):如果指定了 OUTER ... -
SQL关键字执行顺序&MySQL的HAVING
2021-03-03 17:18:59随后我去百度了一下sql关键字的执行顺序,似乎就有了答案。(引用:https://blog.csdn.net/qq_36381855/article/details/80051265) 原来where是在select之前执行的,意思就是where后面的条件,那些字段必须是前面... -
sql 关键字执行顺序
2020-05-15 09:41:07结论 结论先行,顺序如下展示: (1)from ...在sql的执行过程中,每一关键字的执行都会产出一个【虚拟表】,虚拟表作为下一级处理的输入。 验证方法 关键字AS 推理 关键字 AS 就是在 执行的... -
sql内连接,及sql关键字执行顺序
2019-12-26 16:15:36一、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 (11) limit 二.... -
分组查询GROUP BY的使用与SQL执行顺序的讲解
2020-09-09 04:43:54今天小编就为大家分享一篇关于分组查询GROUP BY的使用与SQL执行顺序的讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧 -
sql语句关键字的执行顺序
2020-11-20 11:29:55这里再提一句sql语句的关键字的执行顺序(先执行–》后执行): from on join where group by with having select distinct union order by -
MySQL 关键字执行顺序
2018-06-03 19:15:04在SQL语句中每个关键字都会按照顺序往下执行,而每一步操作,会生成一个虚拟表,最后的虚拟表就是最终结果。 基本sql 语句如下 : (8)SELECT (9)DISTINCT <select_list> (1)FROM <left_... -
贴一张SQL关键字执行顺序图
2020-08-19 14:39:20但是,在实际当中,数据库不一定会按照 JOIN、WHERE、GROUP BY 的顺序来执行查询,因为它们会进行一系列优化,把执行顺序打乱,从而让查询执行得更快,只要不改变查询结果。 -
Mysql关键字执行顺序-深入解析
2022-06-03 18:59:04深入分析mysql各个关键字的执行顺序 -
SQL关键字执行顺序,优化,索引概念
2019-10-24 11:06:56原因:性能低,执行时间太长,等待时间太长,sql语句欠佳,连接查询,索引失效,服务器参数设置不对 编写过程: select...dinstinct .. from ..join ..on ..where..group by ...having ..order by ..limit .. ... -
SQL查询关键字执行顺序
2018-12-18 00:33:54一个完整的SQL查询如下: SELECT DISTINCT column, AGG_FUNC(column_or_expression), … FROM mytable JOIN another_table ON mytable.column = another_table.column WHERE constraint_expression GROUP BY ... -
SQL 关键字执行优先级
2021-08-13 16:24:19一、SQL执行顺序 FORM JOIN ON WHERE GROUP BY AVG( ),SUN( ) HAVING SELECT DISTINCT ORDER BY LIMIT -
mysql关键字执行顺序
2021-04-29 18:00:39mysql-关键字执行顺序 2021-4-29 给出一段sql语句 (8)SELECT(9)DISTINCT <select_list> --查询字段 (1)FROM <left_table> --从哪几个表 (3)<join_type> JOIN <right_table> --表... -
总结SQL语句关键字的执行顺序
2022-05-07 13:52:19执行顺序是怎样的呢? from where group by having select order by 首先从某张表中查询数据,先经过where条件筛选出有价值的数据 对这个有价值的数据进行分组,分组之后可以使用having继续筛选。 ... -
sql关键字的查询顺序和执行顺序
2019-11-05 09:49:50详细请看: https://www.cnblogs.com/solvit/p/9977952.html -
sql语句关键字执行顺序
2019-11-15 19:44:08sql语句关键字执行顺序 关于sql关键字的执行顺序 Select,where,group by,order by四个关键字的先后顺序 Where > select Group by > select Select > order by Where> group by 最终结论: ... -
SQL中关键字的执行顺序
2019-07-21 00:30:20关于Sql关键字SELECT FROM GROUP ORDER 等的执行顺序问题的解释 SQL 中 SELECT 语句的执行顺序 以及十步完全理解SQL 的第二步. 总结: 标准的 SQL 的解析顺序为: (1).FROM 子句, 组装来自不...