資料庫操作中,左連線,右連線是什麼意思,舉例說明

時間 2021-09-16 19:28:00

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樓:

網頁連結這裡有詳細的**,這篇博文寫的很簡單易懂

資料庫裡左連線右連線和全連線的區別是什麼

曉彤 1 左連線,左邊的表不加限制,返回包括左表中的所有記錄和右表中聯結字段相等的記錄 右連線 右邊的表不加限制,返回包括右表中的所有記錄和左表中聯結字段相等的記錄 全連線,左右兩邊的表都不加限制,只返回兩個表中聯結字段相等的行。2 左連線是已左邊表中的資料為基準,若左表有資料右表沒有資料,則顯示左...

資料庫配置連線方式

很簡單的 sql 新增 using system.data.sqlclient sqlconnection con new sqlconnection server database 資料庫名 uid sa pwd 密碼 密碼是你資料庫sa的登入的密碼 或者是 sqlconnection con n...

怎麼連線sqlserver資料庫

sql server2012如何開啟資料庫的遠端連線 怎麼連線sqlserver資料庫 怎麼連線sqlserver資料庫 1 用sql語句 select count from master.dbo.sysprocesses 或者 sp who 2 用管理介面 sql2000 進入企業管理器,管理 當...