今天突然想到了以前去面试的时候一个考官的问题:
请你讲一讲left outer join 和 right outer join 和 full outer join 的区别?
先说重要的
CROSS JOIN 笛卡尔乘积(所有可能的行对)
INNER JOIN 仅对满足连接条件的CROSS中的列
LEFT OUTER JOIN 一个表满足条件的行,和另一个表的所有行
RIGHT OUTER JOIN 与LEFT相同,但两个表的角色互换
FULL OUTER JOIN LEFT OUTER 和 RIGHT OUTER中所有行的超集
下面看个例子:用sql 2005 来做例子
第一准备两张表 ta tb 表
ta表:
tb表:
ta表和tb表通过ta表中的fid和tb表中id关联
第二添加数据
ta表数据如下:
tb表数据如下:
第三我们使用left join 和 left outer join
select * from ta a left outer join tb b on a.fid = b.id
left join 和left outer join 我们看到的结果一样
第四我们使用right join 和 right outer join
select * from ta a right join tb b on a.fid = b.id
right join 和right outer join 我们看到的结果一样
第五我们看看full outer join 的结果
select * from ta a full outer join tb b on a.fid = b.id
如有什么错误请大家指出!