• 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的结果。
     
  • 相关阅读:
    Display a image in ssrs
    How to transfer parameters from AX to SSRS
    How to get a datatable from AX to SSRS report
    MySQL 8.0 plan optimization 源码阅读笔记
    2017 ES GZ Meetup分享:Data Warehouse with ElasticSearch in Datastory
    JVM服务进程挂掉问题定位查询思路
    [HACK] docker runtime 挂载宿主机目录
    maven 禁止连接外网仓库
    旧项目Makefile 迁移CMake的一种方法:include Makefile
    HBase MVCC 机制介绍
  • 原文地址:https://www.cnblogs.com/rulasann/p/9415347.html
Copyright © 2020-2023  润新知