左连接和右连接

理解左连接的查询方式(以两表id相等作为on的条件)

QQ截图20131124224533

 

 

 

 

 

 

 

左右联结还包括没有关联的行,因此在使用左右联结的时候,必须指出right或者left关键字来指定报刊其所有行的表
为从右边的表中选择所有行则使用right 从左边表中选择所有行则使用left

 

左连接语句 select * from test1.a left join test2.b on a.id=b.id

说明:先将左表记录依次排成一行或者多行,若无匹配的记录则显示为null

在本例中,我画了六根线,每根线都表示了一条查询结果记录

当id 为1时:左表有两条id为1的记录,右表只有一条。先查询左表的第一条,然后再查询右表中所有id与左表第一条记录的id相等(即id为1)的记录,因右表只有1条记录的id为1,因此得出的查询结果的第一条记录为 1,2 ,1,1

第二条记录查询方式也是同上

当id为2时,左右表各有2条id为2的记录,也是同上,当查左表第一条id为2的记录时,因右表中有2条id为2的记录,因此查询结果会有两条,即左边的1条记录会和右表的2条记录一一配对

对于id为3的记录,因为右表中没有id为3的记录,所以右边显示为null

 

—————————————————————————————————————————————————————————————————————————————

右连接

右连接语句  select * from test1.a right join test2.b  on a.id=b.id

右连接查询结果:

QQ截图20131124230145

 

____________________________________________________________________________________________________________________

而内连接,则是把id只存在于某一个表中的记录给过滤了

以下三条语句等价

select * from test1 a join test2 b on a.id=b.id

select * from test1 a inner join test2 b on a.id=b.id

select * from test1 a, test2 b where a.id=b.id

4

posted @ 2013-11-24 22:46  long896130895  阅读(523)  评论(0)    收藏  举报