多表关联(概念介绍)

概念介绍

leftjoin(左联接)返回包括左表中的所有记录和右表中联结字段相等的记录

rightjoin(右联接)返回包括右表中的所有记录和左表中联结字段相等的记录

innerjoin(等值连接)只返回两个表中联结字段相等的行

full join(全值连接)返回结果是left join和right join的并集

举例

表A

aID aNum
1 a20181111
2 a20182222
3 a20183333
4 a20184444
5 a20185555

表B

bID bName
1 b20181111
2 b20182222
3 b20183333
4 b20184444
6 b20186666

1.left join

sql语句如下:

select * from A

left join B

on A.aID = B.bID

结果如下:

aID aNum bID bName
1 a20181111 1 b20181111
2 a20182222 2 b20182222
3 a20183333 3 b20183333
4 a20184444 4 b20184444
5 a20185555 NULL NULL

结果说明:
left join是以A表的记录为基础的,左表(A)的记录将会全部表示出来,而右表(B)只会显示符合搜索条件的记录(例子中为:A.aID=B.bID).
B表记录不足的地方均为NULL.

2.right join

sql语句如下:

select * from A

right join B

on A.aID = B.bID

结果如下:

aID aNum bID bName
1 a20181111 1 b20181111
2 a20182222 2 b20182222
3 a20183333 3 b20183333
4 a20184444 4 b20184444
NULL NULL 6 b20186666

结果说明:

left join的结果刚好相反,这次是以右表(B)为基础的,A表不足的地方用NULL填充.

3.inner join

sql语句如下:

select * from A

inner join B

on A.aID = B.bID

结果如下:

aID aNum bID bName
1 a20181111 1 b20181111
2 a20182222 2 b20182222
3 a20183333 3 b20183333
4 a20184444 4 b20184444

结果说明:

这里只显示出了A.aID=B.bID的记录.这说明inner join并不以谁为基础,它只显示符合条件的记录.

4.full join

sql语句如下

select * from A

full join B

on A.aID = B.bID

结果如下:

aID aNum bID bName
1 a20181111 1 b20181111
2 a20182222 2 b20182222
3 a20183333 3 b20183333
4 a20184444 4 b20184444
5 a20185555 NULL NULL
NULL NULL 6 b20186666

结果说明:

这里取了(A)表和(B)表的并集,两表不足的地方用null填充.

results matching ""

    No results matching ""