【sql深入】left join、right join & inner join的比較
做了很久的前端,如今轉戰到後臺有很多東西還是需要自己去學習的,在專案中學習到了聯合查詢的另一種實現方式,左連線,右連結,等值連線,方便了我們在多表查詢,避免了巢狀寫多個查詢語句的“窘境”!
下面通過兩個簡單表staff&apartment來講解不同的諒解方式對應的結果:
staff表:
apartment表:
左連線(left join):
1)以staff表為標準——SELECT * FROM staff LEFT JOIN apartment ON staff.aptId=apartment.id
2)以apartment表為標準——SELECT * FROM staff LEFT JOIN apartment ON staff.aptId=apartment.id
右連線(right join):
1)以staff表為標準——SELECT * FROM staff RIGHT JOIN apartment on staff.aptId=apartment.id
2)以apartment表為標準——SELECT * FROM apartment RIGHT JOIN staff ON staff.aptId=apartment.id
等值連線(inner join):
1)以staff表為標準——SELECT * FROM staff INNER JOIN apartment on staff.aptId=apartment.id
2)以apartment表為標準——SELECT * FROM apartment INNER JOIN staff on staff.aptId=apartment.id
由以上例項可以看出多表的各種連線方式的效果就是將多個表合到一起,各個表的欄位會根據所寫的sql語句中各個表的先後順序排列,沒有資料的欄位便會是null代替。整體上來說左連線會呈現一個居左、居上分佈的狀態,右連結呈現一個居右、居上分佈的狀態,畫面大家可以自己腦補一下!
有了他們方便了多表的聯合查詢,減少了“笨拙”的多條件聯合查語句的拼寫,很是方便!
【續】
在實踐中發現了一個更加高效的方法,很多時候我們都需要考量如何選用這些連結查詢,這裡有一個很簡單的辦法,以SELECT * FROM apartment INNER JOIN staff on staff.aptId=apartment.id為例,我們只需要寫為SELECT
* FROM apartment , staff where staff.aptId=apartment.id,mysql優化器會根據表結構自動選擇合適的連結關鍵字,方便又實用!