sql中的连接查询有inner join(内连接)、left join(左连接)、right join(右连接)、full join(全连接)四种方式
用实际的操作来展现表之间的区别:
现在有二张表
t_section
SQL中INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOIN区别
t_zone
SQL中INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOIN区别

  1. INNER JOIN
SELECT * FROM t_zone INNER JOIN t_section ON t_section.id =t_zone.id

结果集为交集。

SQL中INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOIN区别
2. FULL [OUTER] JOIN
(1)

SELECT * FROM t_zone FULL OUTER JOIN  t_section ON  t_zone.name = t_section.name 

Full outer join 产生A和B的并集。但是需要注意的是,对于没有匹配的记录,则会以null做为值。可以使用IFNULL判断。
注意:这个在获取到数据进行展示的时候,要注意NULL的判断。
(2)
同时使用ISNULL 的判断,可以取得A和B两者没有交集的数据集。

SELECT * FROM t_zone left JOIN t_section ON t_section.id=t_zone.id
WHERE t_zone.id IS null OR t_section.id IS null

总结:这个很好用,可以用来对生产或者测试上的数据进行补数据的操作。

3.LEFT [OUTER] JOIN

SELECT * FROM t_zone left JOIN t_section ON t_section.id=t_zone.id

运行结果:
SQL中INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOIN区别

4.RIGHT[OUTER] JOIN
RIGHT OUTER JOIN 是后面的表为基础,与LEFT OUTER JOIN用法类似。这里不介绍了。

总结

对以上的内容总结为三句话:

  • A INNER JOIN B ON……:内联操作,将符合ON条件的A表和B表结果均搜索出来,然后合并为一个结果集。 A LEFT JOIN
  • B ON……:左联操作,左联顾名思义是,将符合ON条件的B表结果搜索出来, 然后左联到A表上,然后将合并后的A表输出。 A RIGHT
  • JOIN B ON……:右联操作,右联顾名思义是,将符合ON条件的A表结果搜索出来,
    然后右联到B表上,然后将合并后的B表输出。

相关文章: