SQL中 inner join、 left join 、right join、 outer join之间的区别

SQL中 inner join、 left join 、right join、 outer join之间的区别 


A表(a1,b1,c1) B表(a2,b2)
a1 b1 c1 a2 b2
01 数学 95 01 张三
02 语文 90 02 李四
03 英语 80 04 王五
select A.*,B.* from A
inner join B on(A.a1=B.a2)
结果是:
a1 b1 c1 a2 b2
01 数学 95 01 张三
02 语文 90 02 李四
select A.*,B.* from A
left outer join B on(A.a1=B.a2)
结果是:
a1 b1 c1 a2 b2
01 数学 95 01 张三
02 语文 90 02 李四
03 英语 80 NULL NULL
select A.*,B.* from A
right outer join B on(A.a1=B.a2)
结果是:
a1 b1 c1 a2 b2
01 数学 95 01 张三
02 语文 90 02 李四
NULL NULL NULL 04 王五
select A.*,B.* from A
full outer join B on(A.a1=B.a2)
结果是:
a1 b1 c1 a2 b2
01 数学 95 01 张三
02 语文 90 02 李四
03 英语 80 NULL NULL
NULL NULL NULL 04 王五

这四种 joinSQL 常用的关联查询方式,它们之间区别如下: 1. Inner Join(内连接):只返回两个表符合条件的记录,即两个表都存在的记录。 2. Left Join(左连接):返回左表所有记录和右表符合条件的记录,如果右表没有符合条件的记录,则返回 NULL。 3. Right Join(右连接):返回右表所有记录和左表符合条件的记录,如果左表没有符合条件的记录,则返回 NULL。 4. Outer Join(外连接):包括左连接和右连接,同时返回左表所有记录和右表所有记录,并根据条件匹配记录,如果没有匹配的记录,则返回 NULL。 举个例子,假设有两个表 A 和 B,它们的结构如下: 表 A: | ID | Name | | :--: | :----: | | 1 | Tom | | 2 | Peter | | 3 | John | 表 B: | ID | Age | | :--: | :-: | | 1 | 20 | | 3 | 30 | | 4 | 25 | 那么根据不同的 join 类型,查询结果如下: 1. Inner Join: ``` SELECT A.ID, A.Name, B.Age FROM A INNER JOIN B ON A.ID = B.ID; ``` | ID | Name | Age | | :--: | :----: | :-: | | 1 | Tom | 20 | | 3 | John | 30 | 2. Left Join: ``` SELECT A.ID, A.Name, B.Age FROM A LEFT JOIN B ON A.ID = B.ID; ``` | ID | Name | Age | | :--: | :----: | :--: | | 1 | Tom | 20 | | 2 | Peter | NULL | | 3 | John | 30 | 3. Right Join: ``` SELECT A.ID, A.Name, B.Age FROM A RIGHT JOIN B ON A.ID = B.ID; ``` | ID | Name | Age | | :--: | :----: | :-: | | 1 | Tom | 20 | | 3 | John | 30 | | 4 | NULL | 25 | 4. Outer Join: ``` SELECT A.ID, A.Name, B.Age FROM A FULL OUTER JOIN B ON A.ID = B.ID; ``` | ID | Name | Age | | :--: | :----: | :--: | | 1 | Tom | 20 | | 2 | Peter | NULL | | 3 | John | 30 | | 4 | NULL | 25 |
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值