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

2021-09-16 19:28:27 字數 2846 閱讀 3505

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...