zoukankan      html  css  js  c++  java
  • SQL Server [join] 整理


    【表A】
    Aid    Aname   Acode
    1       aa      001
    2       bb      002
    3       cc      003
    4       dd      004
    5       ee      005
    【表B】
    Bid    Bname    Bcode
    1       aaa      101
    3       bbb      102
    5       ccc      103
    7       ddd      104
    9       eee      105
     
    ----------------------------------------------------------------------------
    left join:左联接
    返回包括左表中的所有记录和右表中联结字段相等的记录。
     
    例:
    SELECT *
    FROM A
    LEFT JOIN B
    ON A.Aid=B.Bid

    结果:
    Aid    Aname   Acode   Bid   Bname   Bcode
    1       aa      001     1     aaa     101
    2       bb      002    NULL   NULL    NULL
    3       cc      003     3     bbb     102
    4       dd      004    NULL   NULL    NULL
    5       ee      005     5     ccc     103
     
     
    ----------------------------------------------------------------------------
    right join:右联接
    返回包括右表中的所有记录和左表中联结字段相等的记录。
     
    例:
    SELECT *
    FROM A
    Right JOIN B
    ON A.Aid=B.Bid

    结果:
    Aid    Aname   Acode   Bid   Bname   Bcode
    1       aa      001     1     aaa     101 
    3       cc      003     3     bbb     102
    5       ee      005     5     ccc     103
    NULL    NULL    NULL    7     ddd     104
    NULL    NULL    NULL    9     eee     105
     
     
    ----------------------------------------------------------------------------
    inner join:内联接
    只返回两个表中联结字段相等的行。

    例:
    SELECT *
    FROM A
    INNER JOIN B       //INNER可以不写
    ON A.Aid=B.Bid

    结果:
    Aid    Aname   Acode   Bid   Bname   Bcode
    1       aa      001     1     aaa     101 
    3       cc      003     3     bbb     102
    5       ee      005     5     ccc     103
     
     
    ----------------------------------------------------------------------------
    full join:全联接
    返回两个表中所有字段。

    例:
    SELECT *
    FROM A
    FULL JOIN B  
    ON A.Aid=B.Bid

    结果:
    Aid    Aname   Acode   Bid   Bname   Bcode
    1       aa      001     1     aaa     101
    2       bb      002    NULL   NULL    NULL
    3       cc      003     3     bbb     102
    4       dd      004    NULL   NULL    NULL
    5       ee      005     5     ccc     103
    NULL    NULL    NULL    7     ddd     104
    NULL    NULL    NULL    9     eee     105
     
     
    ----------------------------------------------------------------------------
    cross join:交叉联接
    返回两个表的笛卡儿积。

    例1:
    SELECT *
    FROM A
    Cross JOIN B  

    结果:
    Aid    Aname   Acode   Bid   Bname   Bcode
    1                       1
    2                       1
    3                       1
    4        (5*5条)       1
    5                       1
    1                       3
    2                       3
    ……
    ……
    ……

    例2:
    SELECT *
    FROM A
    Cross JOIN B 
    WHERE
    A.Aid = B.Bid

    结果:
    Aid    Aname   Acode   Bid   Bname   Bcode
    1       aa      001     1     aaa     101 
    3       cc      003     3     bbb     102
    5       ee      005     5     ccc     103
     
    与inner join 结果一样,实际上是先返回所有结果(25条),再从中查询符合WHERE的结果。
     
  • 相关阅读:
    过滤器--起步阶段
    常用指令-起步阶段
    模型和控制器-起步阶段
    指令介绍-起步阶段
    AngularJS简介-起步阶段
    c++之helloworld与命名空间
    c++ 之重要性
    一个没曾摸透的程序
    linux中什么是文件结构体?
    很全的linux网络编程技巧
  • 原文地址:https://www.cnblogs.com/rulasann/p/9415347.html
Copyright © 2011-2022 走看看