SQL left join与right join

之前一直对左右连接的区别与联系模糊不清,今天自己做了一个例子,清晰易懂。

  1. 首先 建两张表:表a 、表b
表a.png
表b.png
left join
  • 先看这一种情况:
SELECT *
FROM a A
LEFT JOIN b B
ON A.id=B.id

查询结果:

left join.png

left join 左边是主表,即主表是a表,所以优先参考a,在b表中没有对应的数据就显示为空。

  • 第二种情况:
SELECT *
FROM b B
LEFT JOIN a A
ON A.id=B.id

查询结果:


left join.png

这种情况主表是 b 表,所以优先考虑b表数据,对应的在a表中没有的数据显示为null,但是不存在这种情况,所以只能显示a表中,符合条件的两条数据。

同时可以发现,在sql语句中,from后面先出现的表,在查询的时候最先显示出来。
同理,在select 的后面,先查询的字段会在查询结果中,先显示出来。
right join
  • 第一种情况:
SELECT *
FROM a A
RIGHT JOIN b B
ON A.id=B.id

查询结果:

right join.png
可以看到与 left join 的第二种情况 查询的数据是一样的,但是表中显示的结果是相反的。
  • 第二种情况:
SELECT *
FROM b B
RIGHT JOIN a A
ON A.id=B.id

查询结果:

right join.png
可以看到与 left join 的第一种情况,查询数据一样,但是显示顺序是相反的。

你可能感兴趣的:(SQL left join与right join)