關於多表的leftJoin

2021-07-05 00:14:05 字數 1138 閱讀 1148

建立表結構如下:

create table x.a (a1 int, a2 varchar(10));

create table x.b (b1 int, b2 varchar(10));

create table x.c (c1 int, c2 varchar(10));

insert into x.a values(    1  ,'haha');

insert into x.a values(    2  ,'ssss');

insert into x.a values(    4  ,'tttt');

insert into x.b values(    1  ,'cccc');

insert into x.c values(    2  ,'***x');

執行下面的兩條left join:

select * from x.a a

left join x.b b on a.a1=b.b1

left join x.c c on a.a1=c.c1;

select * from x.a a

left join x.b b on a.a1=b.b1

left join x.c c on b.b1=c.c1;

實際上結果是不同的:

前者是:

1,haha,1,cccc,(null),(null)

2,ssss,(null),(null),2,***x

4,tttt,(null),(null),(null),(null)

後者是:

1,haha,1,cccc,(null),(null)

2,ssss,(null),(null),(null),(null)

4,tttt,(null),(null),(null),(null)

總結:1. 無論left join怎麼寫,都是先用第一次left join的結果集,與第二個表進行left join。

2. 具體使用哪一種join方法,要依據表結構而定。 

如果是a表中的某乙個字段等於b表中的某乙個字段,b表中的某乙個字段等於c表中的某乙個字段,那麼我們就只能寫成後一種形式。

如果是a表中的某乙個字段等於b表中的某乙個字段,a表中的某乙個字段等於c表中的某乙個字段,那麼我們就需要考慮先join誰了。

Left join多表查詢

sql 多表查詢中用到的連線查詢使用較多的是left join,連線的表查詢到的資料為空時,主表顯示null值,不會影響整個查詢結果 具體用法 1.建立表單 教師表和學院表 create table if not exists teacher id int 11 auto increment pri...

關於使用多表聯查代替LEFT JOIN 的使用方案

還記得,我們在剛剛開始學習mysql的時候,我們的老師或多或少都對我們說。mysql盡量不要去使用多表聯查。但是,理由呢?我們學習的過程之中,不應該僅僅只是去聽 更應該自己思考。我認為任何事情既然其存在必有其存在的含義。因此,我們不應該連考慮都不進行考慮就進行對其的否定。我們也應該勇敢的進行適當的嘗...

如何使用LEFT JOIN實現多表查詢

什麼是left join請各位自行了解,廢話不多說,先直接上三張表 組織表 t organization 部門表 t department 使用者表 t user 邏輯是組織下面有部門,部門下面有使用者,組織和部門通過organization id欄位關聯,部門和使用者通過department id...