SQL的四种连接查询:内连接、左外链接、右外链接、全外链接

本文详细介绍了SQL中的四种连接查询方式:内连接、左外连接、右外连接和全外连接,以及扩展的交叉连接。通过具体例子展示了每种连接如何工作,帮助读者理解并掌握SQL连接查询的使用。

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

首先给出两个表:
a表:

idname
1张三
2李四
3王五

b表:

idjobparent_id
1231
2342
3344

a.id同b.parent_id 存在关系


1. 内连接(INNER JOIN)

满足on条件表达式,内连接是取满足条件表达式的两个表的交集(即两个表都有的数据)。

> select a.*, b.* from a inner join b on a.id=b.parent_id
1张三1231
2李四2342

2. 左外连接(left join / left outer join)

满足on条件表达式,左外连接是以左表为准,返回左表所有的数据,与右表匹配的则有值,没有匹配的则以空(null)取代。

> select a.*, b.* from a left join b on a.id=b.parent_id
1张三1231
2李四2342
3王五nullnullnull

3. 右外连接(right join / right outer join)

满足on条件表达式,右外连接是以右表为准,返回右表所有的数据,与左表匹配的则有值,没有匹配的则以空(null)取代。

> select a.*, b.* from a right join b on a.id=b.parent_id
1张三1231
2李四2342
nullnull3344

4. 全外连接(full join / full outer join)

满足on条件表达式,返回两个表符合条件的所有行,a表没有匹配的则a表的列返回null,b表没有匹配的则b表的列返回null,即返回的是左连接和右连接的并集。

> select a.*, b.* from a full join b on a.id=b.parent_id
1张三1231
2李四2342
nullnull3344
3王五nullnullnull

扩展:交叉连接(cross join)

交叉连接将会返回被连接的两个表的笛卡尔积,返回结果的行数等于两个表行数的乘积。
不加条件返回两个表行数的乘积,即返回的大小将是3 x 3 = 9:

> select * from a cross join b

参考网页:
《深入理解SQL的四种连接-左外连接、右外连接、内连接、全连接》
《SQL各种连接——自连接、内连接、外连接、交叉连接的使用》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值