SQL中inner join,outer join和cross join的区别

Posted 0xcafedaddy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL中inner join,outer join和cross join的区别相关的知识,希望对你有一定的参考价值。

使用join连表,缺陷的情况下是inner join,开发中使用的left join和right join属于outer join,outer join还包括full join

现有两张表,Table A 是左边的表。Table B 是右边的表。其各有四条记录,其中有两条记录name是相同的:

技术分享图片

1.INNER JOIN 产生的结果是AB的交集

SELECT * FROM TableA INNER JOIN TableB ON TableA.name = TableB.name   

技术分享图片

      2.LEFT [OUTER] JOIN 产生表A的完全集,而B表中匹配的则有值,没有匹配的则以null值取代。SELECT * FROM TableA LEFT OUTER JOIN TableB ON TableA.name = TableB.name         

技术分享图片

 3.RIGHT [OUTER] JOIN 产生表B的完全集,而A表中匹配的则有值,没有匹配的则以null值取代。

SELECT * FROM TableA RIGHT OUTER JOIN TableB ON TableA.name = TableB.name图标如left join类似。

 

4.FULL [OUTER] JOIN 产生A和B的并集。对于没有匹配的记录,则会以null做为值。SELECT * FROM TableA FULL OUTER JOIN TableB ON TableA.name = TableB.name 可以通过is NULL将没有匹配的值找出来:SELECT * FROM TableA FULL OUTER JOIN TableB ON TableA.name = TableB.nameWHERE TableA.id IS null OR TableB.id IS null             

技术分享图片

 

5. CROSS JOIN 把表A和表B的数据进行一个N*M的组合,即笛卡尔积。如本例会产生4*4=16条记录,在开发过程中我们肯定是要过滤数据,所以这种很少用。SELECT * FROM TableA CROSS JOIN TableB  

以上是关于SQL中inner join,outer join和cross join的区别的主要内容,如果未能解决你的问题,请参考以下文章

SQL中inner join,outer join和cross join的区别

SQL中inner join,outer join和cross join的区别

SQL中的left outer join,inner join,right outer join用法详解

SQL中inner join,outer join和cross join的区别

SQL的JOIN语法解析(inner join, left join, right join, full outer join的区别)

SQL的JOIN语法解析(inner join, left join, right join, full outer join的区别)