建立表結構如下:
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...