廢話不多說,直接上圖秒懂。
t1表的結構與資料如下:
<a href="http://s1.51cto.com/wyfs02/M02/7F/49/wKiom1cYqQrQKKMuAAAi01Dh3nY395.png" target="_blank"></a>
t2表的結構與資料如下:
<a href="http://s1.51cto.com/wyfs02/M02/7F/47/wKioL1cYqdmTqsY_AAAez3-BvZc580.png" target="_blank"></a>
inner join
select * from t1 inner join t2 on t1.id = t2.id;
<a href="http://s1.51cto.com/wyfs02/M01/7F/49/wKiom1cYqSTSPOjjAABIZF1luok361.png" target="_blank"></a>
inner join會把公共部分的資料查詢出來:
<a href="http://s5.51cto.com/wyfs02/M00/7F/49/wKiom1cYqTGzyjCKAAArIRRnCaQ253.png" target="_blank"></a>
left join
select * from t1 left join t2 on t1.id = t2.id;
<a href="http://s4.51cto.com/wyfs02/M00/7F/47/wKioL1cYqf_DYz0lAAA9yawT17s740.png" target="_blank"></a>
left join查詢出來的結果和前表記錄數一樣多,後表如果沒有對應記錄,則列為空:
<a href="http://s3.51cto.com/wyfs02/M01/7F/47/wKioL1cYqgmg6j94AABDkTAkerY942.png" target="_blank"></a>
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。
本文轉自 興趣e族 51CTO部落格,原文連結:http://blog.51cto.com/simplelife/1766311