SQL中的inner join、left join和right join的区别

left join(左联接):        返回包括左表中的所有记录和右表中联结字段相等的记录 
right join(右联接):      返回包括右表中的所有记录和左表中联结字段相等的记录
inner join(等值连接): 只返回两个表中联结字段相等的行

(一张图来形象的解释体现一个其用法和显示结果:参考链接

用两个简单的例子来体现一下三者的运行结果:(左边是category表,右边是news表)

首先:inner join

select * from category c inner join  news n on c.id=n.id

        通过运行结果可以看出来,显示出了  c.id=n.id的记录.这说明inner join并不以谁为基础,它只显示符合条件的记录.

然后是:left join

select * from category c left join  news n on c.id=n.id

 

        通过运行结果可以看出:left join是以A表的记录为基础的,A可以看成左表,B可以看成右表,left join是以左表为准的.
换句话说,左表(A)的记录将会全部表示出来,而右表(B)只会显示符合搜索条件的记录
(例子中为:  c.id=n.id).
B表记录不足的地方均为NULL.

如下更清晰一点:执行此语句

select * from category c left join  news n on n.id=1003

最后是right join

        其实和left join差不多,只不过此链接是以右表为准的。和left join的结果刚好相反,A表不足的地方用NULL填充.

select * from category c right join  news n on n.id=c.id

如下更清晰一点:执行此语句

select * from category c right join  news n on n.id=7

                                   欢迎大家斧正!!!

发布了114 篇原创文章 · 获赞 18 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_43267344/article/details/103974967