在mysql数据库中准备两张表(a表和b表),如下:
1.内连接(INNER JOIN)
select a.*,b.* from a INNER JOIN b on a.id = b.parent_id;
查询结果:
该查询和
select a.*,b.* from a,b where a.id = b.parent_id;
结果相同
2.外连接(左外连接LEFT JOIN和右外连接RIGHT JOIN)
左外连接:
select a.*,b.* from a LEFT JOIN b on a.id = b.parent_id;
结果:
分析:联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值(NULL)
右外连接:
select a.*,b.* from a RIGHT JOIN b on a.id = b.parent_id;
分析:联接列所匹配的行。如果右表的某行在左表中没有匹配行,将则在相关联的结果集行中左表的所有选择列表列均为空值(NULL)
3.全连接(FULL JOIN)
select a.*,b.* from a FULL JOIN b on a.id = b.parent_id;
由于mysql不支持全连接(FULL JOIN),可以使用 left join+ union+right join
select a.*,b.* from a LEFT JOIN b on a.id = b.parent_id
UNION
select a.*,b.* from a RIGHT JOIN b on a.id = b.parent_id;
结果