SQL将外部联合分为了右外部联合(right outer join)、左外部联合(left outer join)、完全外部联合(full outer join)3个类型。

 

左外部联合:LEFT OUTER JOIN

                                                  

SQL外部联合:right outer join、left outer join、full outer join_sed

基本语法:SELECT column_list

                   FROM table1 LEFT OUTER JOIN table2

                   ON condition

思想:OUTER JOIN语句表1中的所有记录都被返回在结果中,即使表2没有匹配的。

举例:现有演员信息表(Actors)和电影信息表(Class),下文中分别简称表1和表2,具体数据如下:

Actors

SId

SActor

SDateOfBirth

FilmId

1

贝拉

1999-08-07

1

2

爱德华

1998-04-20

3

3

雅各布

1998-11-28

5

 

Films

FilmId

FilmName

YearReleased

1

暮色

2005

2

新月

2006

3

月食

2007

4

破晓

2008

5

午夜阳光

2009

SELECT Actors.SActor, Film.FileName,
FROM Actors LEFT JOIN Film
ON Actors.FilmId = Film.FilmId

返回结果为:

SQL外部联合:right outer join、left outer join、full outer join_sed_02

表1中的只有3个记录全部都包含在结果中。

 

 

左外部联合:RIGHT OUTER JOIN

                                                  

SQL外部联合:right outer join、left outer join、full outer join_基本语法_03

基本语法:SELECT column_list

                   FROM table1 RIGHT OUTER JOIN table2

                   ON condition

思想:与外部联合相反。都返回表2中的所有记录,即使表1没有相匹配的记录

举例:演员信息表(Actors)和电影信息表(Class)

SELECT SActor, FilmName, YearReleased
FROM Actors RIGHT OUTER JOIN Films
ON Actors.FilmId = Films.FilmId

返回结果如下:

SQL外部联合:right outer join、left outer join、full outer join_返回结果_04

 

 

完全外部联合:FULL OUTER JOIN

                                                  

SQL外部联合:right outer join、left outer join、full outer join_基本语法_05

基本语法:SELECT column_list

                   FROM table1 FULL OUTER JOIN table2

                   ON condition

思想:左外部联合和右外部联合的组合。返回表1和表2的所有行

举例:现有演员信息表(Actors)和电影信息表(Class)

SELECT SActor, FilmName, YearReleased
FROM Actors FULL OUTER JOIN Films
ON Actors.FilmId = Films.FilmId;

返回结果如下:

SQL外部联合:right outer join、left outer join、full outer join_sed_06