left join ,right join ,inner join 都是怎么交的?

1.left join 从字面上来看,即为左交,是以左表为基准的,右表通过相应字段的连接来联合的。

A表                                                   

id     name                                         

1      张三                                          

2      李四                                          

3      王五

4      小陈

B表

 id      job

1         厨师

2         教师

3         工人

5        工程师

select * from a left join  b on a.id=b.id

结果是这样的:

id     name      id      job                                   

1      张三     1         厨师

 2      李四    2         教师                                      

3      王五     3         工人

4      小陈    null      null

left join 是左表全部显示,右表显示匹配到的字段和值,匹配不到的用NULL显示。

---------------------------------------------------------------------------------------------------------------

2.right join

right join 从字面上来看,即为右交,是以右表为基准的,左表通过相应字段的连接来联合的。

还以上面例子为例:

select * from a left join b  on a.id=b.id

显示的结果可想而知:

id     name      id      job                                   

1      张三     1         厨师

 2      李四    2         教师                                      

3      王五     3         工人

null    null     5        工程师

right join 是右表全部显示,左表显示匹配到的字段和值,匹配不到的用NULL显示。

-------------------------------------------------------------------------------------------------------------

3.inner join 从字面上来看,即为内交,内链接。内交是通过连接相等字段来执行的。

仍以上面例子为例:

select * from a Inner join b  on a.id=b.id

结果是这样的:

id     name      id      job                                   

1      张三     1         厨师

 2      李四    2         教师                                      

3      王五     3         工人

inner join 是不以左右表为基准来匹配的,而是通过相等字段来链接值形成表的.

-----------------------------------------------------------------------------

在现实应用中,inner join 的速度是远远高于left join 和 right join的,但是具体的使用情况还得看数据的需求。

posted @ 2015-07-08 10:35  scient  阅读(138)  评论(0)    收藏  举报