左外连接就是在等值连接的基础上加上主表中的未匹配数据。
今天下午处理一个SQL,通过left outer join(so as right left outer join)的表的关联方式. 看到这种语法,直觉上反映查询结果的条数应该是Where之后主表返回的记录数(下将Where描述前置略去),直到今天下午写了一个SQL语句,返回的记录数表总表的比总表的还要多.呐尼!
觉得有点不可接受,why?参考资料也没反应整明白是为什么,查找了半天资料,也没明白所以然。
于是拉旁边的哥们讨论一下,哥们看了一下说,有无考虑过子表记录有重复的情况!瞬间明白了....
大概齐也就是这么个事:
CREATE TABLE a( A INT)CREATE TABLE ab( B INT)INSERT INTO a VALUES(1);INSERT INTO a VALUES(2);INSERT INTO ab VALUES(1);INSERT INTO ab VALUES(1);INSERT INTO ab VALUES(1);SELECT * FROM aSELECT * FROM a LEFT OUTER JOIN abON (a.a=ab.b)
查询的结果为:
1 1 1
2 1 13 1 14 2
记录这个事情的主要目的主要是为了说明:在工作的过程中,第一反应的不一定是对的,而当我们自己深陷其中的时候不妨找个局外人帮我们处理一下。是所谓旁观者清,^_^。在讨论的时候还应注意只客观描述问题,尽量不要把小伙伴们也拉到自己的思维陷井中。
连接的参考资料:http://liuzidong.iteye.com/blog/892319