图解 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

 

posted @ 2018-03-02 11:18  桜の  阅读(761)  评论(0编辑  收藏  举报