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

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

例如
A表如下:
在这里插入图片描述sql中left join、right join 和 inner join的区别_第1张图片
B表如下:
sql中left join、right join 和 inner join的区别_第2张图片
1、left join
sql语句如下:

SELECT * from A LEFT JOIN B ON A.A_age=B.B_age

结果如下:
sql中left join、right join 和 inner join的区别_第3张图片
结果说明:left join是以A表的记录为基础的,A可以看成右表,left join是以左表为准的。所以左表A的记录会全部显示出来,而右表B只会显示符合搜索条件的记录(A.A_age=B.B_age)。B表中记录不足的地方均为NULL。

2、right join
sql语句如下:

SELECT * from A RIGHT JOIN B ON A.A_age=B.B_age

结果如下:
sql中left join、right join 和 inner join的区别_第4张图片
结果说明:
通过观察我们就会发现,和left join的结果刚好相反,right join是以右表(B)为基础的,A表不足的地方用NULL填充。

3、inner join
sql语句如下:

SELECT * from A INNER JOIN B ON A.A_age=B.B_age

结果如下:
sql中left join、right join 和 inner join的区别_第5张图片
结果说明:
这里只显示了两个表中符合 A.A_age=B.B_age的记录,这说明 inner join 不以谁为基础,它只显示符合条件的记录。

你可能感兴趣的:(面试)