• SQL查询语句执行的先后顺序


    查询语句执行顺序

    查询中⽤到的关键词主要包含六个,并且他们的顺序依次为select--from--where--group by-- having--order by。
    其中selectfrom是必须的,其他关键词是可选的,这六个关键词的执⾏顺序与sql语句的书写顺序并不是⼀样的,而是按照下⾯的顺序来执⾏:

    1. from:需要从哪个数据表检索数据。
    2. where:过滤表中数据的条件。
    3. group by:如何将上⾯过滤出的数据分组 。
    4. having:对上⾯已经分组的数据进⾏过滤的条件。
    5. select:查看结果集中的哪个列,或列的计算结果。
    6. order by :按照什么样的顺序来查看返回的数据。

    如果SQL中的from有左连接,那left...on...and条件和where条件执行先后顺序是怎样的?

    顺序是:先执行on...and条件,后执行where条件。
    首先根据on...and条件过滤出满足条件的右侧表记录,然后根据关联字段,左侧表再与过滤出的右侧表记录进行连接。
    若满足关联字段相等,则返回左侧表和右侧表字段信息;
    若不满足,则返回左侧表字段信息,右侧表字段则显示NULL

    连接出的结果则存入临时表中。最后where条件是对临时表中的数据进行过滤。
    左连接Left join,以左侧表为主,不管on条件是否满足条件,左侧表的所有记录都会返回。
    换句说:on...and后面的条件对左侧表没有过滤作用,即使加上对左侧表的过滤,也不起作用。on后面的条件对右侧表的过滤起作用。where条件则对左连接后的临时表数据进行筛选。

    以例子说明:

    select * from A left join B
    on A.ID = B.ID and B.NAME = '连接' and A.NAME = '左连接'
    where A.NAME = '左连接'
    

    on and后面的条件:B.NAMEB表有过滤作用,A.NAMEA表不起过滤作用
    where后面的条件:则是对左连接出的临时表数据进行过滤。

  • 相关阅读:
    去除inline-block出现间距的几种方法
    vscode插件和快捷键
    es6三个点运算符
    jq返回顶部
    jq版轮播图
    js动态操作DOM
    js中的闭包
    es6之箭头函数
    in和hasOwnProperty的区别
    改变this指向的三种方法
  • 原文地址:https://www.cnblogs.com/nullcodeworld/p/16540971.html
Copyright © 2020-2023  润新知