MySQL_连表查询

连表查询

  连表查询通常分为内连接和外连接。内连接就是使用INNER JOIN进行连表查询;而外连接又分为三种连接方式,分别是左连接(LEFT JOIN)、右连接(RIGHT JOIN)、全连接(FULL JOIN)。下来我们一起来看一下这几种连接方式的区别及基础用法。

内连接

INNER JOIN

  INNER JOIN将只会返回相匹配的元素项,即不会返回结果为NULL的数据项。如下图所示:

 

   INNER JOIN查询的两张表(A、B)的共有的部分,查询结果为null的记录不会出现。

外连接

  关键字OUTER是可选择的,取决于具体语言,在实现上它们都是遵循标准的

LEFT JOIN

  关键字从左表(A)返回所有的行,即使右表(B)中没有匹配。如果右表中没有匹配,则结果为NULL。

 

  

  简单来说就是不管右表(B)有没有匹配到,都会完全输出左表(A)的所有记录,只是当右表的内容没有匹配到时,则将右表对应的字段的内容设置为NULL。

  当然,对查询的SQL语句稍加改动就可以实现只查询A表中存在的记录。比如说添加一个右表的key为NULL的筛选条件。

RIGHT JOIN

  关键字从右表(B)返回所有的行,即使左表(A)中没有匹配。如果左表(A)中没有匹配,则结果为 NULL。

   如左连接类似,不管左表(A)有没有匹配到结果,都完全显示右表(B)的所有记录,将左表(A)没有匹配到的字段值设为NULL。

   当然,也可以进行简单的筛选得到只有右表(B)存在的记录,设置左表中的key是NULL。

FULL JOIN

  关键字只要左表(A)和右表(B)其中一个表中存在匹配,则返回行。FULL OUTER JOIN 关键字结合了 LEFT JOIN 和 RIGHT JOIN 的结果。

 

  简单来说就是只要两张表(A、B)中任意一张表中存在匹配,则返回记录,当然也可以简单的筛选得到两表中单独存在的记录。比例a.key is null or b.key is null。

 

posted @ 2019-06-10 15:14  AKA绒滑服贵  阅读(949)  评论(0编辑  收藏  举报