您的位置:首页 > 数据库

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                                              
           

Id_PNamephoneAddress
1张三18059861111厦门思明
2李四18059862222深圳南山
3王二18059863333广州佛山
表:Orders

Id_OOrderNoId_P
1OR20171205011
2OR20171205021
3OR20171205033
4OR20171205043
5OR201712050510
1.join 实例如下:
select * from Persons p,Orders o where p.id_P= o.id_P

结果如下:

Id_PNamephoneAddressId_OOrderNoId_P
1张三18059861111厦门思明1OR20171205011
1张三18059861111厦门思明2OR20171205021
3王二18059863333广州佛山3OR20171205033
3王二18059863333广州佛山4OR20171205043
2. inner join 实例如下:
select * from Persons p inner join Orders o  on  p.id_P= o.id_P

结果如下:

d_PNamephoneAddressId_OOrderNoId_P
1张三18059861111厦门思明1OR20171205011
1张三18059861111厦门思明2OR20171205021
3王二18059863333广州佛山3OR20171205033
3王二18059863333广州佛山4OR20171205043
3.left join实例如下:

select * from Persons p left join Orders o  on  p.id_P= o.id_P

结果如下:

Id_PNamephoneAddressId_OOrderNoId_P
1张三18059861111厦门思明1OR20171205011
1张三18059861111厦门思明2OR20171205021
2李四18059862222深圳南山nullnullnull
3王二18059863333广州佛山3OR20171205033
3王二18059863333广州佛山4OR20171205043
4.right join实例如下:

select * from Persons p right join Orders o  on  p.id_P= o.id_P

结果如下:

Id_PNamephoneAddressId_OOrderNoId_P
1张三18059861111厦门思明1OR20171205011
1张三18059861111厦门思明2OR20171205021
3王二18059863333广州佛山3OR20171205033
3王二18059863333广州佛山4OR20171205043
nullnullnullnull5OR201712050510
5.full join实例如下:

select * from Persons p full join Orders o  on  p.id_P= o.id_P

结果如下:

Id_PNamephoneAddressId_OOrderNoId_P
1张三18059861111厦门思明1OR20171205011
1张三18059861111厦门思明2OR20171205021
2李四18059862222深圳南山nullnullnull
3王二18059863333广州佛山3OR20171205033
3王二18059863333广州佛山4OR20171205043
nullnullnullnull5OR201712050510
----------------------举例如下------------------------------------------------------------------------------------------------------------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐