sql之inner join、left join、right join、full join的区别
2017-06-28 10:28
621 查看
1、join(内连接):用于两个或多个表中的列之间的关系,只返回表中联结字段相等的行
selec * from table1 t1,table2 t2 ,table3 t3…
where t1.id=t2.id=t3.id
2、inner join(内连接) :INNER
JOIN 与 JOIN 是相同的
selec * from table1 t1
inner join table2 t2
on 条件 and 条件
3、left join(左连接) :从左表(t1)那里返回所有的行,即使在右表(t2)中没有匹配的行,右表中不存在的均为null
select * from table1 t1
left join table2 t2 on 条件 and 条件
left join table3 t3 on 条件 and 条件
4、right join(右连接):
从右表(t2)那里返回所有的行,即使在左表(t1)中没有匹配的行,左表中不存在的均为null
select * from table1 t1
right join table2 t2
on条件 and 条件
5、full join(全连接):只要关联的表中关键字存在值,就会返回行
select * from table1 t1
full join table2 t2
on 条件 and 条件
----------------------举例如下------------------------------------------------------------------------------------------------------------------------
表:Persons
表:Orders
1.join 实例如下:
select * from Persons p,Orders o where p.id_P= o.id_P
结果如下:
2. inner join 实例如下:
select * from Persons p inner join Orders o on p.id_P= o.id_P
结果如下:
3.left join实例如下:
select * from Persons p left join Orders o on p.id_P= o.id_P
结果如下:
4.right join实例如下:
select * from Persons p right join Orders o on p.id_P= o.id_P
结果如下:
5.full join实例如下:
select * from Persons p full join Orders o on p.id_P= o.id_P
结果如下:
----------------------举例如下------------------------------------------------------------------------------------------------------------------------
selec * from table1 t1,table2 t2 ,table3 t3…
where t1.id=t2.id=t3.id
2、inner join(内连接) :INNER
JOIN 与 JOIN 是相同的
selec * from table1 t1
inner join table2 t2
on 条件 and 条件
3、left join(左连接) :从左表(t1)那里返回所有的行,即使在右表(t2)中没有匹配的行,右表中不存在的均为null
select * from table1 t1
left join table2 t2 on 条件 and 条件
left join table3 t3 on 条件 and 条件
4、right join(右连接):
从右表(t2)那里返回所有的行,即使在左表(t1)中没有匹配的行,左表中不存在的均为null
select * from table1 t1
right join table2 t2
on条件 and 条件
5、full join(全连接):只要关联的表中关键字存在值,就会返回行
select * from table1 t1
full join table2 t2
on 条件 and 条件
----------------------举例如下------------------------------------------------------------------------------------------------------------------------
表:Persons
Id_P | Name | phone | Address |
1 | 张三 | 18059861111 | 厦门思明 |
2 | 李四 | 18059862222 | 深圳南山 |
3 | 王二 | 18059863333 | 广州佛山 |
Id_O | OrderNo | Id_P |
1 | OR2017120501 | 1 |
2 | OR2017120502 | 1 |
3 | OR2017120503 | 3 |
4 | OR2017120504 | 3 |
5 | OR2017120505 | 10 |
select * from Persons p,Orders o where p.id_P= o.id_P
结果如下:
Id_P | Name | phone | Address | Id_O | OrderNo | Id_P |
1 | 张三 | 18059861111 | 厦门思明 | 1 | OR2017120501 | 1 |
1 | 张三 | 18059861111 | 厦门思明 | 2 | OR2017120502 | 1 |
3 | 王二 | 18059863333 | 广州佛山 | 3 | OR2017120503 | 3 |
3 | 王二 | 18059863333 | 广州佛山 | 4 | OR2017120504 | 3 |
select * from Persons p inner join Orders o on p.id_P= o.id_P
结果如下:
d_P | Name | phone | Address | Id_O | OrderNo | Id_P |
1 | 张三 | 18059861111 | 厦门思明 | 1 | OR2017120501 | 1 |
1 | 张三 | 18059861111 | 厦门思明 | 2 | OR2017120502 | 1 |
3 | 王二 | 18059863333 | 广州佛山 | 3 | OR2017120503 | 3 |
3 | 王二 | 18059863333 | 广州佛山 | 4 | OR2017120504 | 3 |
select * from Persons p left join Orders o on p.id_P= o.id_P
结果如下:
Id_P | Name | phone | Address | Id_O | OrderNo | Id_P |
1 | 张三 | 18059861111 | 厦门思明 | 1 | OR2017120501 | 1 |
1 | 张三 | 18059861111 | 厦门思明 | 2 | OR2017120502 | 1 |
2 | 李四 | 18059862222 | 深圳南山 | null | null | null |
3 | 王二 | 18059863333 | 广州佛山 | 3 | OR2017120503 | 3 |
3 | 王二 | 18059863333 | 广州佛山 | 4 | OR2017120504 | 3 |
select * from Persons p right join Orders o on p.id_P= o.id_P
结果如下:
Id_P | Name | phone | Address | Id_O | OrderNo | Id_P |
1 | 张三 | 18059861111 | 厦门思明 | 1 | OR2017120501 | 1 |
1 | 张三 | 18059861111 | 厦门思明 | 2 | OR2017120502 | 1 |
3 | 王二 | 18059863333 | 广州佛山 | 3 | OR2017120503 | 3 |
3 | 王二 | 18059863333 | 广州佛山 | 4 | OR2017120504 | 3 |
null | null | null | null | 5 | OR2017120505 | 10 |
select * from Persons p full join Orders o on p.id_P= o.id_P
结果如下:
Id_P | Name | phone | Address | Id_O | OrderNo | Id_P |
1 | 张三 | 18059861111 | 厦门思明 | 1 | OR2017120501 | 1 |
1 | 张三 | 18059861111 | 厦门思明 | 2 | OR2017120502 | 1 |
2 | 李四 | 18059862222 | 深圳南山 | null | null | null |
3 | 王二 | 18059863333 | 广州佛山 | 3 | OR2017120503 | 3 |
3 | 王二 | 18059863333 | 广州佛山 | 4 | OR2017120504 | 3 |
null | null | null | null | 5 | OR2017120505 | 10 |
相关文章推荐
- (转)图解SQL的inner join、left join、right join、full outer join、union、union all的区别
- 图解SQL的inner join、left join、right join、full outer join、union、union all的区别
- 图解SQL的inner join、left join、right join、full outer join、union、union all的区别 .
- SQL的inner join、left join、right join、full outer join、union、union all的区别
- 图解SQL的inner join、left join、right join、full outer join、union、union all的区别
- 图解SQL的inner join、left join、right join、full outer join、union、union all的区别
- 图解SQL的inner join、left join、right join、full outer join、union、union all的区别
- 图解SQL的inner join、left join、right join、full outer join、union、union all的区别
- 图解SQL的inner join、left join、right join、full outer join、union、union all的区别
- 图解SQL的inner join、left join、right join、full outer join、union、union all的区别
- 图解SQL的inner join、left join、right join、full outer join、union、union all的区别
- SQL中Left Join 与Right Join 与 Inner Join 与 Full Join的区别
- SQL中cross join,left join,right join ,full join,inner join 的区别
- 图解SQL的inner join、left join、right join、full outer join、union、union all的区别
- SQL中cross join,left join,right join ,full join,inner join 的区别
- 图解SQL的inner join、left join、right join、full outer join、union、union all的区别
- 图解SQL的inner join、left join、right join、full outer join、union、union all的区别
- SQL语句中inner join、left join、right join、full join的区别
- 图解SQL的inner join、left join、right join、full outer join、union、union all的区别
- 图解SQL的inner join、left join、right join、full outer join、union、union all的区别