数据库--连接(JOIN)

2019-07-17  本文已影响0人  二妹是只猫

SQL join 用于把来自两个或多个表的行结合起来。
下图展示了 LEFT JOIN、RIGHT JOIN、INNER JOIN、OUTER JOIN 相关的 7 种用法。

image.png
接下来我们将会实现这7种链接
首先准备两个表: website(网站表) access_log(网站访问表)

website access_log

LEFT JOIN:

LEFT JOIN 关键字从左表(table1)返回所有的行,即使右表(table2)中没有匹配

包含所有a集合(普通情况):

select id,name from Websites a left join access_log b on a.id=b.aid
image.png

排除a集合中包含的b集合

select id,name from Websites a left join access_log b on a.id=b.aid where b.aid is null
image.png

INNER JOIN(表的并集):

INNER JOIN 关键字在表中存在至少一个匹配时返回行

select id,name FROM Websites a INNER JOIN access_log b on a.id=b.aid
image.png

RIGHT JOIN:

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

包含所有b集合(普通情况):

select id,name from Websites a right join access_log b on a.id=b.aid
image.png

排除b中包含有a的数据

select id,name from Websites a right join access_log b on a.id=b.aid where a is null
image.png

FULL OUTER JOIN :

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

使用的mysql不支持该语法,就不贴结果了.解决方案使用left join union right join

select id,name from Websites a FULL OUTER JOIN  access_log b on a.id=b.aid
上一篇 下一篇

猜你喜欢

热点阅读