關於left join 查詢的乙個小誤區

2021-06-07 22:04:56 字數 826 閱讀 6054

兩個表 a b

aid ** 顏色 類別

1     yy        紅色  1

2    dd      白色   2

bid ** 名稱   類別

1  dd      社保科  1

2  dd     勞務科   2

3   xx      保衛科  1

4   xx     資料室    2

5 yy        宣傳科  2

sql:

select a.**,a.顏色,b.名稱 from a left join b on a.**=b.** where a.類別=1 and b.類別=1

結果** 顏色 名稱

----------------------  無記錄 ,顯然這不是我想要的

原來 在left join 查詢中,where語法如果 加了限制右表 b的條件 ,就會參與到整個查詢中

修改 select a.**,a.顏色,b.名稱 from a left join b on a.**=b.** and a.類別=b.類別 where a.類別=1

結果正確

select a.**,a.顏色,b.名稱 from a left join b on a.**=b.** and b.類別=1 where a.類別=1   語法錯誤

順便說一句 ,如果有多個表lieft join,在access中,需要用括號

select a.**,a.顏色,b.名稱,c.x from ((a left join b on a.**=b.** and a.類別=b.類別) left join c on a.id=c.id ) where a.類別=1

乙個新手對where和left join的疑惑

問題描述 在開發中 兩個表進行關聯有兩種方式,一是通過select a.b.from a,b where a.id b.id 二是select a.b.from a left join b on b.id.a.id 對此表示疑惑這兩者到底有什麼區別?開始探索 首先建立兩個表a,b a表 id typ...

乙個關於模糊查詢的寫法

今天在論壇上看到這樣一帖 share欄位是varchar型別的,裡面存放的資料是 1,2,24 格式的 現在我要找出該字段中所有包含1,2,3,4四個數字中任一數值的記錄。我最初的寫法 db.dbcmd.commandtext select from userinfo where share lik...

關於多表的leftJoin

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