SQL多表查询:内连接、外连接(左连接、右连接)、全连接、交叉连接
内连接
select a.*,b.* from a inner join b on a.id = b.parent_id
结果:
Id |
Name |
ID |
Job |
Parent_Id |
1 |
张三 |
1 |
教师 |
1 |
2 |
李四 |
2 |
工程师 |
2 |
左连接:保留左表记录,右表被筛掉的为NULL
select a.*,b.* from a left join b on a.id = b.parent_id
结果:
Id |
Name |
ID |
Job |
Parent_Id |
1 |
张三 |
1 |
教师 |
1 |
2 |
李四 |
2 |
工程师 |
2 |
3 |
王五 |
NULL |
NULL |
NULL |
右连接:保留右表记录,左表被筛掉的为NULL
select a.*,b.* from a right join b on a.id = b.parent_id
结果:
Id |
Name |
ID |
Job |
Parent_Id |
1 |
张三 |
1 |
教师 |
1 |
2 |
李四 |
2 |
工程师 |
2 |
NULL |
NULL |
3 |
农民 |
4 |
全连接:
select a.*,b.* from a full join b on a.id = b.parent_id
结果:
Id | Name | ID | Job | Parent_Id |
1 | 张三 | 1 | 教师 | 1 |
2 | 李四 | 2 | 工程师 | 2 |
NULL | NULL | 3 | 农民 | 4 |
3 | 王五 | NULL | NULL | NULL |
交叉连接:表a的每条数据与表b每条数据依次匹配组合(笛卡尔积)a*b
select a.*,b.* from a cross join b on a.id = b.parent_id
结果:
Id | Name | ID | Job | Parent_Id |
1 | 张三 | 1 | 教师 | 1 |
1 | 张三 | 2 | 工程师 | 2 |
1 | 张三 | 3 | 农民 | 4 |
2 | 李四 | 1 | 教师 | 1 |
2 | 李四 | 2 | 工程师 | 2 |
2 | 李四 | 3 | 农民 | 4 |
3 | 王五 | 1 | 教师 | 1 |
3 | 王五 | 2 | 工程师 | 2 |
3 | 王五 | 3 | 农民 | 4 |
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。