废话不多说,直接上图秒懂。

t1表的结构与数据如下:

wKiom1cYqQrQKKMuAAAi01Dh3nY395.png

t2表的结构与数据如下:

wKioL1cYqdmTqsY_AAAez3-BvZc580.png

inner join

select * from t1 inner join t2 on t1.id = t2.id;

wKiom1cYqSTSPOjjAABIZF1luok361.png

inner join会把公共部分的数据查询出来

wKiom1cYqTGzyjCKAAArIRRnCaQ253.png


left join

select * from t1 left join t2 on t1.id = t2.id;

wKioL1cYqf_DYz0lAAA9yawT17s740.png

left join查询出来的结果和前表记录数一样多后表如果没有对应记录,则列为空

wKioL1cYqgmg6j94AABDkTAkerY942.png

right join

right join能转化为left join,例如:

select * from t1 right join t2 on t1.id = t2.id;

能转化为

select * from t2 left join t1 on t1.id = t2.id;

只是前表发生了变化而已。


大伙可结合自己的业务场景,选择正确的join。


转自微信公众号:架构师之路