INNER JOIN、LEFT JOIN和RIGHT JOIN的区别

本文介绍了SQL中的三种JOIN操作:INNERJOIN、LEFTJOIN和RIGHTJOIN。INNERJOIN返回两个表中匹配的记录,LEFTJOIN包含左表所有记录并用NULL填充未匹配项,RIGHTJOIN则反之,包含右表所有记录。理解这些概念有助于优化数据库查询和管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

INNER JOIN、LEFT JOIN和RIGHT JOIN都是SQL中的连接查询(JOIN),它们的区别在于连接条件不同,所得到的结果集也会有所不同。

INNER JOIN:

INNER JOIN返回两个表中符合连接条件的记录集合。只有当左表和右表中都存在匹配的行时,才会包含该行数据。如下所示:

假设我们有两张表A和B:

Table A:
ID  Name
1   Alice
2   Bob
3   Charlie

Table B:
ID  Age
2   30
4   40
5   50

如果我们使用内连接查询语句 SELECT * FROM A INNER JOIN B ON A.ID = B.ID,则得到的结果为:

ID  Name    ID  Age
2   Bob     2   30

只有表A中ID为2的Bob与表B中ID为2的记录匹配,因此仅返回了这一条记录。

LEFT JOIN:

LEFT JOIN将左表中所有的记录都包含在结果集中,而右表中符合连接条件的记录则加入到结果集中,在右表中没有匹配行的地方填充NULL值。如下所示:

SELECT * FROM A LEFT JOIN B ON A.ID = B.ID

其结果为:

ID  Name    ID  Age
1   Alice   NULL NULL
2   Bob     2   30
3   Charlie NULL NULL

注意到上述结果中,每一行都返回了表A中的记录,而表B中无法与表A中第一行的记录匹配,因此用NULL填充。

RIGHT JOIN:

RIGHT JOIN与LEFT JOIN类似,不同之处在于它会将右表中所有的记录都包含在结果集中,并将左表中符合连接条件的记录加入到结果集中。如果左表中没有匹配行,则用NULL值进行填充。如下所示:

SELECT * FROM A RIGHT JOIN B ON A.ID = B.ID

其结果为:

ID  Name    ID  Age
2   Bob     2   30
NULL NULL    4   40
NULL NULL    5   50

注意到上述结果,每一行都返回了表B中的记录,而表A中无法与表B中第二、第三行记录匹配,因此用NULL填充。

需要注意的是,使用连接查询时,应该确保连接条件正确,避免出现笛卡尔积情况,导致结果集过大。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值