left join 以左边的表为基础,右边的表可能出现空值。即左表的记录会全部显示出来,而右表只会显示符合搜索条件的记录。
right join 以右边的表为参考,左边的表可能出现空值。同上。
如一个例子
表a
表b
①两个表a,b连接,取出id相同的字段
select * from a
inner join b
on a.aid=b.bid;
结果为:
换一下顺序
select * from a
inner join b
on a.aid=b.bid;
结果为
发现结果一样,只是结果的排列顺序有变化。由此可以得出inner join并不以谁为准,只显示符合条件的记录。
②那么left join指:
select * from a
left join b
on a.aid = b.bid;
此时结果为:
首先取出a中所有数据,然后再加上与a,b匹配的数据,发现表b中出现null值。
③right join是指
select * from a
right join b
on a.aid = b.bid;
结果为:
同理,a中出现null值。
再举一个例子。
表c
表d
①inner join时
select * from c
inner join b
on c.cID = d.dID;
结果为:
调一下顺序
select * from d
inner join c
on c.cID = d.dID;
结果为
发现二者结果仍然一样。
②left join时
select * from c
left join b
on c.cID = d.dID;
结果为:
③right join时
select * from c
right join b
on c.cID = d.dID;
结果为:
通过以上结果可以看出,
left join 以左表为基准,会列出左表所有记录,然后列出右表所有符合条件的记录。
right join则以右表为基准,列出右表所有记录,再列出左表所有符合条件的记录。
inner join则不以任何表为基准,只列出符合条件的记录。