欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

连接查询

程序员文章站 2022-05-29 18:54:48
...

1、外连接

1)左连接
返回指定左表的所有行,如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择的列均为空值(null)。

select * from table1 left join table2 on table1.id=table2.id

结果:

id  name   pid   score
------------------------------
1   lee    1     90
2   zhang  2     100
4   wang   NULL  NULL

2)右连接
返回指定右表的所有行。如果右表的某行在左表中没有匹配行,则在相关联的结果集行中左表的所有选择的列均为空值(null)。

select * from table1 right join table2 on table1.id=table2.id

结果:

id   name  pid  score
------------------------------
1    lee   1    90
2    zhang 2    100
NULL NULL  3    70

3)完全连接
返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的所有选择的列均为空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。

select * from table1 full join table2 on table1.id=table2.id

结果:

id   name  pid  score
------------------------------
1    lee   1    90
2    zhang 2    100
4    wang  NULL NULL
NULL NULL  3    70

2、内连接
内联接是用比较运算符比较要联接列的值的联接,只包含满足查询条件的列。

select * from table1 join table2 on table1.id=table2.id

结果:

id  name  pid  score
------------------------------
1   lee   1   90
2   zhang 2   100

3、交叉连接(笛卡尔积)
产生联接所涉及的表的笛卡尔积。

select * from table1 cross join table2

结果:

id  name  pid  score
------------------------------
1   lee   1    90
2   zhang 1    90
4   wang  1    90
1   lee   2    100
2   zhang 2    100
4   wang  2    100
1   lee   3    70
2   zhang 3    70
4   wang  3    70
相关标签: 连接查询