sql中左連線和右連線的理解誤區:
1.左右外連線中,怎麼區分哪個表當左表,哪個表當右表?
2.什麼時候用左連線,什麼時候用右連線?
首先,重新捋一遍二者概念:
左連線的語法:select 列名 from 左表 left join 右表 on 表連線的條件
左連線的作用:在內連線的基礎上,保證左表中所有的資料都出現,如果沒有匹配的右表資料,使用
null填充。
右連線的語法:select 列名 from 左表 right join 右表 on 表連線的條件
右連線的作用:在內連線的基礎上,保證右表中所有的資料都出現,如果沒有匹配的左表資料,使
用null填充。
理解誤區一:左右外連線中,怎麼區分哪個表當左表,哪個表當右表?
解答: 左表和右表是相對於 「 left join " 和 「right join」 而言的, 「 left join "的左邊就是左表,右邊就是右表。左連線可以理解為:在內連線的基礎上,保證 「 left join "左邊的表(左表)的資料全部顯示。同理,右連線可以理解為:在內連線的基礎上,保證 「 right join "右邊的表(右表)的資料全部顯示。
理解誤區二:什麼時候用左連線,什麼時候用右連線?
解答: 雖然左連線和右連線在使用語法上有區別,但是他們可以達到同樣的連線表的效果,只是表內列的位置不同。舉個栗子:
(有a,b兩張表,現要分別用左右連線兩種方式將其連線,並保證a表中的資料全部顯示)
左連線: a left join b on… ----> 連線後表為 :ab(a表中的資料全部顯示)
右連線:b right join a on… —>連線後的表為:ba(a表中的資料全部顯示)
因此,左右連線都可以達到連線表的目的,兩種方式任君選擇。個人建議主要需求在哪個**就將哪個**寫在左邊(因為在關鍵字左邊的**連線後也會出現在表的左邊),再結合情況選擇具體用left還是right。比如下面的部門表和員工表,我的側重點在部門,所以把部門放在左邊,然後我要顯示部門的所有資料,所以用left,這樣連線起來的**比較一目了然。
左連線:select*from dept d left join emp e on d.id = e.dept_id group by d.id
;
右連線:select*from emp e right join dept d on e.dept_id
= d.id group by d.id
;
SQL 中的左連線和右連線
2.sql left join 關鍵字 select column name s from table name1 left join table name2 on table name1.column name table name2.column name left join 關鍵字會從左表 t...
sql中的左連線和右連線
兩張表,a表中的記錄b表中不一定有。左連線 關注左邊,右邊沒有就為空。右連線 關注右邊,左邊沒有就為空。內連線 返回交集 例如 student表s idname ageclass id 1yang221 2su201 3fan202 4li302 5luo 22class表c class id na...
理解SQL的左連線與右連線
假設有a,b兩個表。表a記錄如下 aid anum 1 a20050111 2 a20050112 3 a20050113 4 a20050114 5 a20050115 表b記錄如下 bid bname 1 2006032401 2 2006032402 3 2006032403 4 200603...