mysql 外链接 自连接

本文深入解析了SQL中的四种主要连接类型:内连接、左外连接、右外连接和全外连接,以及自连接的使用场景和操作方法。通过具体实例,展示了如何在不同情况下选择合适的连接方式,以实现数据的有效整合。

假设有两张表,分别为表a和表b,

a:

id    name  nick_name

1     张三      张三

2     李四       李

3      王五      王五

 

b:

id   age   a_id

1     23     1

2     56      3

3     18      4

 

内连接:至少一个表中匹配即可,相当于取a和b的交集

SELECT a.name,b.age FROM a INNER JOIN b ON a.id = b.a_id; 

结果:

name  age

张三    23

王五    56

左外连接:返回左表里所有的行,即使右表里没有匹配

SELECT a.name,b.age FROM a LEFT JOIN b ON a.id = b.a_id; 

name  age

张三    23

李四    null

王五    56

右外连接:返回右表里所有的行,即使左表里没有匹配

SELECT a.name,b.age FROM a RIGHT JOIN b ON a.id = b.a_id; 

name  age

张三    23

null     56

王五    56

全外连接:只要一个表里有即可,相当于取a,b的并集

SELECT * FROM a FULL JOIN b; 

id   name  id   age  a_id

1    张三    1    23    1
2    李四    1    23    1
3    王五    1    23    1
1    张三    2    56    3
2    李四    2    56    3
3    王五    2    56    3
1    张三    3    18    5
2    李四    3    18    5
3    王五    3    18    5

自连接:对a表进行自连接,即把一个表当做两个表来用

SELECT a1.name,a1.nick_name FROM a a1 INNER JOIN a a2 ON a1.name = a2.nick_name; 

name  nick_name

张三     张三

王五      王五

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值