图解 SQL 各种连接查询之间的区别

关于sql的join语法 ,有很多种用法,如left,inner等等

   假设我们有两张表。Table A 是左边的表。Table B 是右边的表。其各有四条记录,其中有两条记录name是相同的,如下所示:让我们看看不同JOIN的不同。

1.  INNER JOIN

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

Inner join 产生的结果集中,是A和B的交集。

2. FULL [OUTER] JOIN 

SELECT * FROM TableA FULL OUTER JOIN TableB ON TableA.name = TableB.name 

Full outer join 产生A和B的并集。但是需要注意的是,对于没有匹配的记录,则会以null做为值。

可以使用IFNULL判断。

如SELECT * FROM TableA FULL OUTER JOIN TableB ON TableA.name = TableB.name
WHERE TableA.id IS null OR TableB.id IS null:可以查询出A与B的并集去掉A与B的交集的结果集

3. LEFT [OUTER] JOIN

 Left outer join 产生表A的完全集,而B表中匹配的则有值,没有匹配的则以null值取代

SELECT * FROM TableA  LEFT OUTER JOIN TableB ON TableA.name = TableB.name WHERE TableB.id IS null

    产生在A表中有而在B表中没有的集合。

http://blog.csdn.net/xuanjiewu/article/details/50636465

原文地址:https://www.cnblogs.com/chenxihui/p/8492238.html