当前位置: 代码迷 >> Sql Server >> []SQL的左连接到底是如何实现的
  详细解决方案

[]SQL的左连接到底是如何实现的

热度:18   发布时间:2016-04-24 09:55:51.0
[求助在线等]SQL的左连接到底是怎么实现的?
我个人觉得很奇怪。

按理说表A和表B相连接,采用的是迪卡尔积,这个积里面不会出现NULL值。既然如此,表A左连接表B的时候又是如何得到表B中的NULL值的?除非它采用的不是迪卡尔积,还有一种可能就是,每表都多一行数据,就是全为NULL的一行数据,这样积出来的结果,才会有NULL,不知道我说的对不对?
------解决思路----------------------
那 当然会出现全null的,一般正式系统不会允许有一行或者多行全null得存在。我的确结果有书上介绍join的本质是先做笛卡儿积,但是同时会带上一句“最终结果要由编译器、优化引擎决定”(大概这个意思),所以通常我不关注这个问题。只是说,不应该允许表中有全null的数据
------解决思路----------------------
表A和表B的迪卡尔积不能直接得到,需要程序通过遍历才能出结果的。
所以是根据连接方式选用不同的遍历方法得出结果,而不是先有迪卡尔积再怎么出连接结果的问题,先后次序千万别搞错了。
  相关解决方案