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
Bid Bname Bcode
1 aaa 101
3 bbb 102
5 ccc 103
7 ddd 104
9 eee 105
----------------------------------------------------------------------------
left join:左联接
left join:左联接
返回包括左表中的所有记录和右表中联结字段相等的记录。
例:
SELECT *
FROM A
LEFT JOIN B
ON A.Aid=B.Bid
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
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 JOINS:SQL Server 中是不是默认关联“JOIN”语句“LEFT OUTER”? [复制]