精华内容
下载资源
问答
  • sql关键字执行顺序
    2022-03-18 20:55:54

    关键字是按照如下顺序进行执行的:Where, Group By, Having, Order by。

    • FROM 
    • WHERE (先过滤单表/视图/结果集,再JOIN) 
    • GROUP BY 
    • HAVING (WHERE过滤的是行,HAVING过滤的是组,所以在GROUP之后) 
    • ORDER BY
    更多相关内容
  • 首先给出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中关键字执行顺序以及执行顺序可以说是基本中的基本了,也是很简单的,其实也不是不需要额外单独拎出来写的,自己脑子里想想也是能想明白的。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中存在下面的关键字时,它们要保持这样的顺序:

    [html]  view plain  copy
    1. select[distinct]  
    2. from  
    3. join(如left join)  
    4. on  
    5. where  
    6. group by  
    7. having  
    8. union  
    9. order by  
    10. limit  

    
    

    2)Mysql执行顺序,即在执行时sql按照下面的顺序进行执行:

    [html]  view plain  copy
    1. from  
    2. on  
    3. join  
    4. where  
    5. group by  
    6. having  
    7. select  
    8. distinct  
    9. union  
    10. order by  
    3)针对上面的Mysql语法顺序和执行顺序,循序渐进进行学习:

    建立如下表格orders:


    注:下面所有语句符合语法顺序(也不可能不符合,因为会报错^_^),只分析其执行顺序:(join和on属于多表查询,放在最后展示)

    语句一:

    [html]  view plain  copy
    1. select a.Customer  
    2. from orders a  
    3. where a.Customer='Bush' or a.Customer = 'Adams'  
    分析一:首先是from语句找到表格,然后根据where得到符合条件的记录,最后select出需要的字段,结果如下:


    语句二groupby:groupby要和聚合函数一起使用

    [html]  view plain  copy
    1. select a.Customer,sum(a.OrderPrice)  
    2. from orders a  
    3. where a.Customer='Bush' or a.Customer = 'Adams'  
    4. group by a.Customer  
    分析二:在from,where执行后,执行group by,同时也根据group by的字段,执行sum这个聚合函数。这样的话得到的记录对group by的字段来说是不重复的,结果如下:

    语句三having:

    [html]  view plain  copy
    1. select a.Customer,sum(a.OrderPrice)  
    2. from orders a  
    3. where a.Customer='Bush' or a.Customer = 'Adams'  
    4. group by a.Customer  
    5. having sum(a.OrderPrice) > 2000  
    分析三:由于where是在group之前执行,那么如何对group by的结果进行筛选,就用到了having,结果如下:


    语句四distinct: (为测试,先把数据库中Adams那条记录的OrderPrice改为3000)

    [html]  view plain  copy
    1. select distinct sum(a.OrderPrice)  
    2. from orders a  
    3. where a.Customer='Bush' or a.Customer = 'Adams' or a.Customer = 'Carter'  
    4. group by a.Customer  
    5. having sum(a.OrderPrice) > 1700  
    分析四:将得到一条记录(没有distinct,将会是两条同样的记录):


    语句五union:完全是对select的结果进行合并(默认去掉重复的记录):

    [html]  view plain  copy
    1. select distinct sum(a.OrderPrice) As Order1  
    2. from orders a  
    3. where a.Customer='Bush' or a.Customer = 'Adams' or a.Customer = 'Carter'  
    4. group by a.Customer  
    5. having sum(a.OrderPrice) > 1500  
    6. union  
    7. select distinct sum(a.OrderPrice) As Order1  
    8. from orders a  
    9. where a.Customer='Bush' or a.Customer = 'Adams' or a.Customer = 'Carter'  
    10. group by a.Customer  
    11. having sum(a.OrderPrice) > 2000  
    分析五:默认去掉重复记录(想保留重复记录使用union all),结果如下:


    语句六order by:

    [html]  view plain  copy
    1. select distinct sum(a.OrderPrice) As order1  
    2. from orders a  
    3. where a.Customer='Bush' or a.Customer = 'Adams' or a.Customer = 'Carter'  
    4. group by a.Customer  
    5. having sum(a.OrderPrice) > 1500  
    6. union  
    7. select distinct sum(a.OrderPrice) As order1  
    8. from orders a  
    9. where a.Customer='Bush' or a.Customer = 'Adams' or a.Customer = 'Carter'  
    10. group by a.Customer  
    11. having sum(a.OrderPrice) > 2000  
    12. order by order1  
    分析:升序排序,结果如下:


    语句七limit:

    [html]  view plain  copy
    1. select distinct sum(a.OrderPrice) As order1  
    2. from orders a  
    3. where a.Customer='Bush' or a.Customer = 'Adams' or a.Customer = 'Carter'  
    4. group by a.Customer  
    5. having sum(a.OrderPrice) > 1500  
    6. union  
    7. select distinct sum(a.OrderPrice) As order1  
    8. from orders a  
    9. where a.Customer='Bush' or a.Customer = 'Adams' or a.Customer = 'Carter'  
    10. group by a.Customer  
    11. having sum(a.OrderPrice) > 2000  
    12. order by order1  
    13. limit 1  
    分析七:取出结果中的前1条记录,结果如下:


    语句八(上面基本讲完,下面是join 和 on):

    [html]  view plain  copy
    1. select distinct sum(a.OrderPrice) As order1,sum(d.OrderPrice) As order2  
    2. from orders a  
    3. left join (select c.* from Orders c) d   
    4. on a.O_Id = d.O_Id  
    5. where a.Customer='Bush' or a.Customer = 'Adams' or a.Customer = 'Carter'  
    6. group by a.Customer  
    7. having sum(a.OrderPrice) > 1500  
    8. union  
    9. select distinct sum(a.OrderPrice) As order1,sum(e.OrderPrice) As order2  
    10. from orders a  
    11. left join (select c.* from Orders c) e   
    12. on a.O_Id = e.O_Id  
    13. where a.Customer='Bush' or a.Customer = 'Adams' or a.Customer = 'Carter'  
    14. group by a.Customer  
    15. having sum(a.OrderPrice) > 2000  
    16. order by order1  
    17. limit 1  
    分析八:上述语句其实join on就是多连接了一张表,而且是两张一样的表,都是Orders。 执行过程是,在执行from关键字之后根据on指定的条件,把left join指定的表格数据附在from指定的表格后面,然后再执行where字句。

    注:

    1)使用distinct要写在所有要查询字段的前面,后面有几个字段,就代表修饰几个字段,而不是紧随distinct的字段;

    2)group by执行后(有聚合函数),group by后面的字段在结果中一定是唯一的,也就不需要针对这个字段用distinct;

    展开全文
  • 上代码 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关键字执行顺序图解执行顺序详解:1. FROM:对FROM子句中前两个表执行笛卡尔积生成虚拟表vt12. ON: 对vt1表应用ON筛选器只有满足 join_condition 为真的行才被插入vt23. OUTER(JOIN):如果指定了 OUTER ...
  • 随后我去百度了一下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关键字执行顺序为 (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执行顺序的讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
  • 这里再提一句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 &lt;select_list&gt; (1)FROM &lt;left_...
  • 但是,在实际当中,数据库不一定会按照 JOIN、WHERE、GROUP BY 的顺序来执行查询,因为它们会进行一系列优化,把执行顺序打乱,从而让查询执行得更快,只要不改变查询结果。
  • 深入分析mysql各个关键字执行顺序
  • 原因:性能低,执行时间太长,等待时间太长,sql语句欠佳,连接查询,索引失效,服务器参数设置不对 编写过程: select...dinstinct .. from ..join ..on ..where..group by ...having ..order by ..limit .. ...
  • 一个完整的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:39
    mysql-关键字执行顺序 2021-4-29 给出一段sql语句 (8)SELECT(9)DISTINCT <select_list> --查询字段 (1)FROM <left_table> --从哪几个表 (3)<join_type> JOIN <right_table> --表...
  • 执行顺序是怎样的呢? from where group by having select order by 首先从某张表中查询数据,先经过where条件筛选出有价值的数据 对这个有价值的数据进行分组,分组之后可以使用having继续筛选。 ...
  • 详细请看: https://www.cnblogs.com/solvit/p/9977952.html
  • sql语句关键字执行顺序 关于sql关键字的执行顺序 Select,where,group by,order by四个关键字的先后顺序 Where > select Group by > select Select > order by Where> group by 最终结论: ...
  • 关于Sql关键字SELECT FROM GROUP ORDER 等的执行顺序问题的解释 SQL 中 SELECT 语句的执行顺序 以及十步完全理解SQL 的第二步. 总结: 标准的 SQL 的解析顺序为: (1).FROM 子句, 组装来自不...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 116,416
精华内容 46,566
关键字:

sql关键字执行顺序