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

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

现有两张表:

mysql > select * from left_table
+---id---+---name---+----code----+
|   1    |   零食   |  10344875  |
|   2    |   糕点   |  20983781  |
|   3    |   餐饮   |  39981029  |
|   4    |   娱乐   |  78654654  |
+--------+----------+------------+

mysql > select * from right_table
+---id---+---name---+----code----+
|   1    |   坚果   |  59364875  |
|   2    |   蛋糕   |  87652372  |
|   4    |   网咖   |  87667233  |
|   5    |   攀岩   |  45326756  |
+--------+----------+------------+

left join

mysql > select * from left_table lt
left join right_table rt on lt.id = rt.id
+---id---+---name---+----code----+---id---+---name---+----code----+
|   1    |   零食   |  10344875  |   1    |   坚果   |  59364875  |
|   2    |   糕点   |  20983781  |   2    |   蛋糕   |  87652372  |
|   4    |   娱乐   |  78654654  |   4    |   网咖   |  87667233  |
|   3    |   餐饮   |  39981029  |  null  |   null   |  null      |
+--------+----------+------------+--------+----------+------------+

查询结果记录说明:
left join是以左表(left_table)的记录为基础的。
左表的记录将会全部查询出来,而右表(right_table)只会显示符合搜索条件的记录,右表记录不足的地方均为null。

right join

mysql > select * from left_table lt
right join right_table rt on lt.id = rt.id
+---id---+---name---+----code----+---id---+---name---+----code----+
|   1    |   零食   |  10344875  |   1    |   坚果   |  59364875  |
|   2    |   糕点   |  20983781  |   2    |   蛋糕   |  87652372  |
|   4    |   娱乐   |  78654654  |   4    |   网咖   |  87667233  |
|  null  |   null   |  null      |   5    |   攀岩   |  45326756  |
+--------+----------+------------+--------+----------+------------+

查询结果记录说明:
right join是以右表(right_table)的记录为基础的。
右表的记录将会全部查询出来,而左表(left_table)只会显示符合搜索条件的记录,左表记录不足的地方均为null。

inner join

mysql > select * from left_table lt
inner join right_table rt on lt.id = rt.id
+---id---+---name---+----code----+---id---+---name---+----code----+
|   1    |   零食   |  10344875  |   1    |   坚果   |  59364875  |
|   2    |   糕点   |  20983781  |   2    |   蛋糕   |  87652372  |
|   4    |   娱乐   |  78654654  |   4    |   网咖   |  87667233  |
+--------+----------+------------+--------+----------+------------+

查询结果记录说明:
inner join并不以哪张表的记录为基础的;它只查询符合条件的记录

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容