内连接 (常用)
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 |