zoukankan      html  css  js  c++  java
  • left join 和 left outer join 的区别

    老是混淆,做个笔记,转自:https://www.cnblogs.com/xieqian111/p/5735977.html

    left join 和 left outer join 的区别
    通俗的讲:  
      A   left   join   B   的连接的记录数与A表的记录数同  
      A   right   join   B   的连接的记录数与B表的记录数同    
      A   left   join   B   等价B   right   join   A  
       
       
      table   A:  
    Field_K,   Field_A  
      1                       a  
      3                       b  
      4                       c  
       
      table   B:  
      Field_K,   Field_B  
      1                       x  
      2                       y  
      4                       z  
       
      select   a.Field_K,   a.Field_A,   b.Field_K,   b.Field_B  
      from   a   left   join   b   on   a.Field_K=b.Field_K  
       
      Field_K         Field_A         Field_K         Field_B          
      ----------   ----------   ----------   ----------    
      1                     a                     1                     x                    
      3                     b                     NULL               NULL  
      4                     c                     4                     z                    
       
      select   a.Field_K,   a.Field_A,   b.Field_K,   b.Field_B  
      from   a   right   join   b   on   a.Field_K=b.Field_K  
       
      Field_K         Field_A         Field_K         Field_B          
      ----------   ----------   ----------   ----------    
      1                     a                     1                     x                    
      NULL               NULL               2                     y                    
      4                     c                     4                     z       --
    
    举个例子:  
      假设a表和b表的数据是这样的。  
      a                         b    
      id     name  id     stock   
      1  a             1         15  
      2         b             2         50  
      3         c                  
       
      select   *   from   a   inner   join   b   on   a.id=b.id  
      这个语法是连接查询中的内连接,它产生的结果是  
      两个表相匹配的记录出现在结果列表中。  
      根据上面的表,出现的结果是这样的  
      a.id     name     b.id     stock  
      1       a             1         15  
      2             b             2         50  
      ----------------------------  
      select   *   from   a,b   where   a.id=b.id  
      这个语法是内连接的另外一种写法,其执行结果与inner   join   一样  
       
      --------------------------------    
       
      select   *   from   a   left/right   join   b   on   a.id=b.id  
      这个是外连接语法中的左外连接或右外连接  
      如果是左外连接的话,它将显示a表的所有记录,  
      select   a.*,b.*   from   a   left   join   b   on   a.id=b.id  
      查询的结果是这样的:  
      a.id     name     b.id     stock  
      1         a         1             15  
      2               b         2             50  
      3               c       null         null   
      --------------------------------------------  
      如果是右外连接的话,它将显示b表的所有记录,  
      select   a.*,b.*   from   a   right   join   b   on   a.id=b.id  
      查询的结果是这样的:  
      a.id     name     b.id     stock  
      1         a         1             15  
      2               b         2             50   
    
    --
    
    select   a.*,b.*   from   a   left   join   b   on   a.k   =   b.k    
      select   a.*,b.*   from   a   left   outer   join   b   on   a.k   =b.k  
      ----------上面两种一样left   join是left   outer   join的简写  
      select   a.*,b.*   from   a   left   inner   join   b   on   a.k   =   b.k    
      没有这种写法,错误的语句.
    
    --
    
    在你要使用多个left   join的时候  
      比如说10个  
      我们把10个全都写成left   join的形式  
      然后再SQL让他自动运行一下,它会把最后一次出现的left   join变成left   outer   join  
      所以依此推理,最后一个left   join会以left   outer   join的形式存在  
      当然,不管变不变对结果的显示没有任何影响  
      希望我的实验能对你有所帮助   
  • 相关阅读:
    linux(centos)搭建SVN服务器
    应该具备的能力
    Oracle trunc()函数的用法
    Realistic View for Autodesk Revit 2021
    Snowman
    A Material-Texture Painting Tool
    A Color Picker based on manifold learning
    CPU Path Tracing Renderer
    Rig Space FEM Simulation
    MPM Snow Simulation
  • 原文地址:https://www.cnblogs.com/xh_Blog/p/10683727.html
Copyright © 2011-2022 走看看