日期:2014-05-16  浏览次数:20503 次

谁可以讲讲left join/right join/inner join的区别和用法。
这三个东西比较晕,分别什么情况使用,差别在哪里?谁可以给大家讲一讲?
------解决方案--------------------
left join是以左表的记录为基础的,如果A可以看成左表,B可以看成右表,left join是以左表为准的. 
换句话说,左表(A)的记录将会全部表示出来,而右表(B)只会显示符合搜索条件的记录

right join 和left join 相反;

inner join 是相等连接;

最佳的理解,你创建两个表,关联试试,就懂了。

------解决方案--------------------
其实内连接inner join,就是比如2个集合,一个是1,2,3 ,另一个是2,3,4 那么inner join只会出来,大家都有的,也就是2,3


而如果是left join,那么首先对主表,会出来所有的,也就是1,2,3 而对子表,只会出来能链接上的,也就是2,3。

另外,比较特别的是cross join,就是比如1,2,3  和 2,3,4,那么cross join之后,就变成了9条,也就是3*3=9,不需要有任何的关联条件

------解决方案--------------------
引用:
Quote: 引用:

其实内连接inner join,就是比如2个集合,一个是1,2,3 ,另一个是2,3,4 那么inner join只会出来,大家都有的,也就是2,3


而如果是left join,那么首先对主表,会出来所有的,也就是1,2,3 而对子表,只会出来能链接上的,也就是2,3。

另外,比较特别的是cross join,就是比如1,2,3  和 2,3,4,那么cross join之后,就变成了9条,也就是3*3=9,不需要有任何的关联条件


cross join一般什么情况下使用啊。发现基本没用过这个东西。

相当于INNER JOIN ON 1=1,没什么用。
------解决方案--------------------
引用:
Quote: 引用:

其实内连接inner join,就是比如2个集合,一个是1,2,3 ,另一个是2,3,4 那么inner join只会出来,大家都有的,也就是2,3


而如果是left join,那么首先对主表,会出来所有的,也就是1,2,3 而对子表,只会出来能链接上的,也就是2,3。

另外,比较特别的是cross join,就是比如1,2,3  和 2,3,4,那么cross join之后,就变成了9条,也就是3*3=9,不需要有任何的关联条件


cross join一般什么情况下使用啊。发现基本没用过这个东西。


这个一般在产生一些组合的时候,要用到。类似于排列组合,比如1,2  和 a,b 那么cross join后就是:

1,a
1,b
2,a
2,b