sql中的连接查询有inner join(内连接)、left join(左连接)、right join(右连接)、full join(全连接)四种方式
用实际的操作来展现表之间的区别:
现在有二张表
t_section
t_zone
- INNER JOIN
SELECT * FROM t_zone INNER JOIN t_section ON t_section.id =t_zone.id
结果集为交集。
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
运行结果:
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表输出。