Inner join, left join, right join, full join in MySQL

MySQL数据库现有TA, TB 两张表,表数据如下:

TA
IDNAME
1A_1
2A_2
3A_3
4A_4
5A_5
7A_7
TB
IDNAME
1B_1
2B_2
3B_3
4B_4
5B_5
6B_6

 

INNER JOIN

select * from TA INNER JOIN TB ON TA.ID = TB.ID;

等效于

select * from TA JOIN TB ON TA.ID = TB.ID; 

等效于 

select * from TA, TB where TA.ID = TB.ID;

结果
IDNAMEIDNAME
1A_11B_1
2A_22B_2
3A_33B_3
4A_44B_4
5A_55B_5

Inner join 是查询出两张表都满足条件的结果。

 

Left Join 

SELECT * FROM ta LEFT JOIN tb on ta.id = tb.id;

等效于

SELECT * FROM ta LEFT OUTER JOIN tb on ta.id = tb.id;

左连接
IDNAMEIDNANE
1A_11B_1
2A_22B_2
3A_33B_3
4A_44B_4
5A_55B_5
7A_7NULLNULL

左外连接就是在等值连接的基础上加上主表中的未匹配数据,即本例中TA中未匹配的数据 ID为7的数据。

 

Right Join

SELECT * FROM ta RIGHT JOIN tb on ta.id = tb.id;

等效于

SELECT * FROM ta RIGHT OUTER JOIN tb on ta.id = tb.id;

右连接
IDNAMEIDNAME
1A_11B_1
2A_22B_2
3A_33B_3
4A_44B_4
5A_55B_5
NULLNULL6B_6

右外连接就是在等值连接的基础上加上主表中的未匹配数据,即本例中TB中为匹配的数据 ID为6的数据。

 

Full Join

SELECT * FROM ta FULL JOIN tb;

等效于

SELECT * FROM ta, tb;

全连接
IDNAMEIDNAME
1A_11B_1
2A_21B_1
3A_31B_1
4A_41B_1
5A_51B_1
7A_71B_1
............
1A_16B_6
2A_26B_6
3A_36B_6
4A_46B_6
5A_56B_6
7A_76B_6

全连接就是两张表的笛卡尔积。共36条数据,即TA 6条数据,TB 6 条数据, 相乘。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值