sql之inner join、left join、right join、full join的区别

来源:互联网 发布:流行音乐知乎 编辑:程序博客网 时间:2024/06/17 12:13

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_PNamephoneAddress1张三18059861111厦门思明2李四18059862222深圳南山3王二18059863333广州佛山
表:Orders
Id_OOrderNoId_P1OR201712050112OR201712050213OR201712050334OR201712050435OR201712050510
1.join 实例如下:

select * from Persons p,Orders o where p.id_P= o.id_P

结果如下:

Id_PNamephoneAddressId_OOrderNoId_P1张三18059861111厦门思明1OR201712050111张三18059861111厦门思明2OR201712050213王二18059863333广州佛山3OR201712050333王二18059863333广州佛山4OR20171205043

2. inner join 实例如下:
select * from Persons p inner join Orders o  on  p.id_P= o.id_P

结果如下:

d_PNamephoneAddressId_OOrderNoId_P1张三18059861111厦门思明1OR201712050111张三18059861111厦门思明2OR201712050213王二18059863333广州佛山3OR201712050333王二18059863333广州佛山4OR20171205043

3.left join实例如下:

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

结果如下:

Id_PNamephoneAddressId_OOrderNoId_P1张三18059861111厦门思明1OR201712050111张三18059861111厦门思明2OR201712050212李四18059862222深圳南山nullnullnull3王二18059863333广州佛山3OR201712050333王二18059863333广州佛山4OR20171205043

4.right join实例如下:

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

结果如下:

Id_PNamephoneAddressId_OOrderNoId_P1张三18059861111厦门思明1OR201712050111张三18059861111厦门思明2OR201712050213王二18059863333广州佛山3OR201712050333王二18059863333广州佛山4OR20171205043nullnullnullnull5OR201712050510

5.full join实例如下:

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

结果如下:

Id_PNamephoneAddressId_OOrderNoId_P1张三18059861111厦门思明1OR201712050111张三18059861111厦门思明2OR201712050212李四18059862222深圳南山nullnullnull3王二18059863333广州佛山3OR201712050333王二18059863333广州佛山4OR20171205043nullnullnullnull5OR201712050510

----------------------举例如下------------------------------------------------------------------------------------------------------------------------



阅读全文
0 0
原创粉丝点击