zoukankan      html  css  js  c++  java
  • left join 太神奇了

    概念:

    • 把left join左边的表的记录全部找出来。系统会先用表A和表B做个笛卡儿积,然后以表A为基表,去掉笛卡儿积中表A部分为NULL的记录。最后形成你的结果。

    • 进行左连接时,就有涉及到主表、辅表,这时主表条件写在WHERE之后,辅表条件写在ON后面。

    • 二、实例

      1、表a结构和数据

      table a(id, type):
      
      id     type 
      
      ----------------------------------
      
      1      1         
      
      2      1          
      
      3      2     
    • 2、表b结构和数据

      table b(id, class):
      
      id    class 
      
      ---------------------------------
      
      1      1
      
      2      2
    • 3、SQL语句调用

      --sql语句1:
      
      select a.*, b.* from a left join b on a.id = b.id and a.type = 1; //a表id 等于b表id ,a.type=1 可以 true也可以false,左联
      
      执行结果为:
      
      a.id    a.type    b.id    b.class
      
      ----------------------------------------
      
      1        1            1        1
      
      2        1            2        2
      
      3        2     

      

    • --sql语句3:
      
      select a.*, b.* from a left join b on a.id = b.id and b.class = 1;  //a表id等于b表id , b.class 等于1或者不等于1,左联
      
      执行结果为:
      
      a.id    a.type    b.id    b.class
      
      ----------------------------------------
      
      1        1            1        1
      
      2        1            
      
      3        2          
      
    • 4、总结:

      • sql语句1可见,left join 中左表的全部记录将全部被查询显示,on 后面的条件对它不起作用,除非再后面再加上where来进行筛选,这就是sql语句2了。

      • 由sql语句3可见,on后面的条件中,右表的限制条件将会起作用。

      --总结了一种简单的方式来理解上述情况:

      •   LEFT JOIN ON WHERE:在临时表生成后,再对临时表的数据进行过滤,再返回左表。

          LEFT JOIN ON AND:在临时表生成的过程时,ON中的条件不管是否为真,都将返回左表。

       其实以上结果的关键原因就是left join,right join,full join的特殊性,不管on上的条件是否为真都会返回left或right表中的记录,full则具有left和right的特性的并集。而inner jion没这个特殊性,则条件放在on中和where中,返回的结果集是相同的。
  • 相关阅读:
    zookeeper的集群搭建
    Java代码操作zookeeper
    zookeeper的简介和相关命令操作
    Linux上搭建zookeeper服务注册中心
    Java8新特性(三)之方法引用和构造器引用
    Java8新特性(一)之Lambda表达式
    react-navigation 3.x版本的使用
    react-navigation 3.x版本的安装以及react-native-gesture-handler配置
    react-native 打包 出apk
    webpack的使用
  • 原文地址:https://www.cnblogs.com/xiaohuizhenyoucai/p/10615634.html
Copyright © 2011-2022 走看看