left join on與直連線的區別
一,直連線(有兩種的表達方式)
employee 員工表 dept 部門表
id name deptid id name
1 tom 1 1 研發部
2 jack 3 2 銷售部
3 luck 3 財務部
直連線跟內連線是一樣的,只是叫法不一樣。直連線有兩種表達的方式。只有滿足了連線條件的資料才會顯示出來.
select * from employee e ,dept d where e.deptid=d.id;
select * from employee e inner join dept d on e.deptid=d.id;
id name deptid name
1 tom 1 研發部
2 jack 3 財務部
二,左連線 left join on(左表資料全部顯示,右表資料如果滿足連線條件就顯示,不滿足就顯示null)
select * from employee e left join dept d on e.deptid=d.id;
d name deptid name
1 tom 1 研發部
2 jack 3 財務部
3 luck null
左連線這裡主要注意一點,left join on 後面的連線條件很重要。
select * from employee e left join dept d on e.deptid=d.id and e.id=1;
這裡左表資料全部顯示,右表的資料只有滿足條件才顯示,不然為null
d name deptid name
1 tom 1 研發部
2 jack 3 null
3 luck null
select * from employee e left join dept d on e.deptid=d.id wher e.id=1;
這裡只顯示滿足條件的資料 ,相當於直連線了。
d name deptid name
1 tom 1 研發部
所以要認清 left join on 後面條件是直接on還是where
總結:直連線:只有滿足條件的時候才會顯示,有兩種的寫法,效果是一樣的;
左連線:左表資料全部顯示,右表資料如果滿足連線條件就顯示,不滿足就顯示null。還需要注意後面加的條件