数据库的 join 连接类型
9月 30, 2017
内连接 #
内连接为默认连接方式,只有两张表都匹配的行才显示。
SELECT * from a INNER JOIN b on a.name=b.name;
左(外)连接 #
左边的表不加限制,会全部显示出来,右边的只会显示符合搜索条件的记录,不匹配的记录会以 null 显示。
SELECT * from a LEFT JOIN b on a.name=b.name;
右(外)连接 #
右边的表不加限制,左边不匹配的记录会以 null 显示。
SELECT * from a RIGHT JOIN b on a.name=b.name;
全(外)连接 #
两张表都不加限制,左右的列都有不匹配的 null 显示。
MySQL 不支持全外连接,可以通过union
实现:
select * from B left join A
on B.name = A.name
union all
select * from B right join A
on B.name = A.name;
用 union 和 union all 的区别:union all 不会去重,会把两张表的数据全部取出。