需要從兩個或多個表中獲取結果時,可以使用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的條件,也返回左表中的數據。