1樓:樂海白
sql join 子句用於把來自兩個或多個表的行結合起來,基於這些表之間的共同欄位。
left join(左連線) 返回包括左表中的所有記錄和右表中聯結欄位相等的記錄。
即使右表中沒有匹配,也從左表返回所有的行。
right join(右連線)返回包括右表中的所有記錄和左表中聯結欄位相等的記錄。
即使左表中沒有匹配,也從右表返回所有的行。
示例表:表1和表2
1、left join 例:
註釋:王五在表2中沒有匹配的記錄,所以表2的內容為null。
2、right join例:
註釋:表2中所有記錄被返回。
2樓:123飯後娛樂
左連線:只要左邊表中有記錄,資料就能檢索出來,而右邊有的記錄必要在左邊表中有的記錄才能被檢索出來。
右連線:右連線是隻要右邊表中有記錄,資料就能檢索出來。
舉例說明
新建兩張表,分別為t_left_tab和t_right_tab。
將t_left_tab作為左邊表,t_right_tab作為右邊。
左連線:select * from t_left_tab a left join t_right_tab b on a.`id` = b.`id`;
查詢結果:
右連線:select * from t_right_tab a left join t_left_tab b on a.`id` = b.`id`;
查詢結果:
查詢最大條數:select * from t_left_tab a left join t_right_tab b on 1=1;
查詢結果:
3、總結
a 資料庫左連線和右連線的區別:主表不一樣。
b 通過左連線和右連線,最小條數為3(記錄條數較小的記錄數),最大條數為12(3×4)。
擴充套件資料:
資料庫中的自連線:
自連線(self join)可以把它這個過程想象成兩張一樣的表進行左連線或右連線,其中一張表通過設別名的方式成為了虛表,但是共享原標中的資訊。
應用場景:就是表的一個欄位和另一個欄位是相同性質的東西,譬如員工與上司,他們本質也都是員工。
在員工表中,員工的直接上司編號會以另一個欄位的形式出現,但是他的上司的編號也是會出現在員工編號這個欄位裡。
那麼在這種情況下,假如需要去查詢某一位員工的上司的資訊,在已知該員工編號的條件下,可以根據他的編號去獲得上司的編號,進而通過上司的編號去獲得上司的資訊。
舉個例子:
empid empname empleaderid
1 張三 4
2 李四 7
3 王麻子 7
4 陳六 8
5 週日 7
6 王八 8
7 郝九 8
8 m10 null
上面的表名為employee,那麼我要查詢李四的上司的資訊,對應的sql語句應該是這樣的:
select *from employee e1 left join employee e2 on e1.empleaderid=e2.empid where e1.
empid=2;
3樓:匿名使用者
假設a表有兩個欄位,aid、name, b 表也有兩欄位 bid,nameid
其中 nameid是aid在b 表中的外來鍵。
a表有資料如下:
aid name
1 a2 b
3 cb表有資料如下:
bid nameid
1 12 1
3 14 2
5 2用左連線,說白一點就是以左邊那個表為標準,左邊那表(表a)的所有記錄必須得全部出現,例如:
select * from a left join b on a.aid=b.nameid
結果應應該為:
aid name bid nameid
1 a 1 1
1 a 2 1
1 a 3 1
2 b 4 2
2 b 5 2
3 c null null
表a 的 aid為1的出現了三次,aid為2的出現了兩次,aid為3的出現了一次,全部都出現了。但因為在表b中沒有以aid為3對應的記錄,所以用null來填充。
同樣道理,用右連線,說白一點就是以右邊那個表為標準,
例如:select * from a right join b on a.aid=b.nameid
結果應該為:
aid name bid nameid
1 a 1 1
1 a 2 1
1 a 3 1
2 b 4 2
2 b 5 2
表b的記錄必須全部出現,但沒有出現 a表中aid為3的記錄,是因為b表中沒有以之對應的記錄,而且此時是以b表為標準的。這樣的比喻不知你看不看得明。
4樓:匿名使用者
看這個,就明瞭
5樓:
網頁連結這裡有詳細的**,這篇博文寫的很簡單易懂
asp資料庫連線問題,asp資料庫連線問題
貼那麼多 幹嘛,不說重點 有無出錯提示?有的話,是第幾行?那一行 是哪句?if password rs password then 當你open時查詢記錄為空時,再下面這條判斷密碼的if不成立,則會出錯。中間要加個if rs.eof false and rs.bof false then 把你的連線...
怎麼連線sqlserver資料庫
sql server預設是不允許遠端連線的,如果想要在本地用ssms連線遠端伺服器上的sqlserver資料庫,需要確認以下環節 1 如果是工作組環境,則需要使用sql server身份驗證方式 2 如果是windows域環境,則可使用windows身份驗證或者sql server身份驗證 現在以工...
Eclipse中JDBC各資料庫怎樣連線
常用jdbc連線資料庫方法總結如下 一 jdbc連線db2 string url jdbc db2 dburl port dbname cn url,susr,spwd 二 jdbc連線microsoft sqlserver microsoft cn jdbc microsoft sqlserver...