SQL Server [join] 整理

Posted 小白也想敲代码

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的结果。
 






























































































以上是关于SQL Server [join] 整理的主要内容,如果未能解决你的问题,请参考以下文章

sql BIT / IAM-1758 - sp_CE_ListarCalificacionesAsigRubSubRubCompletasAlumno - Se adiciona JOIN c

sql BIT / IAM-1881 - spListarAlumnosEvaluacion - Se agrega JOIN con Cat_EstatusAlumnos para filt

SQL Server查询备份日期和备份设备名

SQL Server JOINS:SQL Server 中是不是默认关联“JOIN”语句“LEFT OUTER”? [复制]

SQL Server Join方式

SQL Server基础:Join