sql中Join詳解

需要從兩個或多個表中獲取結果時,可以使用Join來查詢。

有兩個測試數據表t1,t2分別存放如下測試信息:
這裏寫圖片描述
這裏寫圖片描述

join的使用方法如下:
一:join
如果表中有至少一個匹配,則返回行。
select t1.id, t2.name, t1.age from t1 join t2 on t1.id = t2.id;
這裏寫圖片描述

二:left join
即使右表中沒有匹配,也從左表返回所有的行
select t2.id, t2.name, t1.age from t2 left join t1 on t1.id = t2.id;
這裏寫圖片描述

三:right join
即使左表中沒有匹配,也從右表返回所有的行
select t2.id, t2.name, t1.age from t2 right join t1 on t1.id = t2.id;
這裏寫圖片描述

四:關鍵字on和where條件的區別
以left join 爲例
1:on條件是在生成臨時表時使用的條件,它不管on中的條件是否爲真,都會返回左邊表中的記錄。
2:where條件是在臨時表生成好後,再對臨時表進行過濾的條件,條件爲真的纔會返回記錄。

select * from t1 left join t2 on t2.id = t1.id where t1.age > 20;
先執行select * from t1 left join t2 on t2.id = t1.id;得到臨時表
這裏寫圖片描述

再從臨時表中查詢滿足條件t1.age > 20的數據。
這裏寫圖片描述

select * from t1 left join t2 on t2.id = t1.id and t1.age > 20;
即使不滿足t1.age > 20的條件,也返回左表中的數據。
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章