当前位置:网站首页 > 技术博客 > 正文

inner join、left join和right join的区别?



Left join

inner join

是在SQL语句中用于联接两个表的关键词。左联接(

Left join

)返回左表中的所有记录以及右表中与左表中联接字段相等的记录,如果右表中没有匹配的记录,则用null填充。而等值连接(

inner join

)则只返回两个表中联接字段相等的行。

具体

区别

如下:

1. 返回结果不同:

Left join

返回右表全部记录,右表不满足匹配条件的记录返回对应行返回null,而

inner join

只返回两个表中联接字段相等的行。

2. 使用索引不同:

left join

通常不会使用左表的索引,而是使用右表的索引进行匹配。而

inner join

则会走索引,以提高查询效率。

3. 驱动表选择不同:

MySQL

在连接时,会自动选择较小的表作为驱动表,以减少循环次数。在

inner join

中,

MySQL

会自动选择较小的表作为驱动表。而在使用

left join

时,默认左表作为驱动表,因此左表的大小需要我们来控制,如果控制不当,则循环次数会增多,从而影响效率。

4. 返回数据不同:

left join

会查询表A的所有数据,对于表B中没有的数据,将显示为null。而

inner join

只返回两个表联接字段相等的数据。

示例:

假设有两个表A和B,我们使用以下SQL语句进行联接:

-

Left join

: select * from A

left join

B on A.aID = B.bID

-

Inner join

: select * from A

inner join

B on A.aID = B.bID

这样,

left join

将返回A表的所有记录,以及与A表中的记录匹配的B表中的记录。如果B表中没有匹配的记录,则用null填充。而

inner join

只返回A表和B表中联接字段相等的记录。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>

  • 上一篇: linux autologin
  • 下一篇: 服务器监控源码
  • 版权声明


    相关文章:

  • linux autologin2025-09-05 09:30:03
  • ncurses getch2025-09-05 09:30:03
  • string char数组2025-09-05 09:30:03
  • 电脑看电子书的软件2025-09-05 09:30:03
  • log4net appender2025-09-05 09:30:03
  • 服务器监控源码2025-09-05 09:30:03
  • 断点 调试2025-09-05 09:30:03
  • 指针图解2025-09-05 09:30:03
  • 点云配准数据集2025-09-05 09:30:03
  • 三维数组 js2025-09-05 09:30:03