SQL left join 特殊情況

我們通常認爲A left join B後,結果集與A表的記錄條數一致

但,並不是這樣

with  x as 
(
select 1 as id,90 as score from dual union all
select 2 as id,80 as score from dual union all
select 3 as id,70 as score from dual
),
y as (
select 1 as id ,'John' as name from dual union all
select 2 as id,'Adam' as name from dual 
)
select x.id,x.score,y.name from x
left join y on x.id=y.id

 

 這樣的結果是我們預期的,

但如果修改一下,連接條件是id相等,那麼我們嘗試 讓y表的id有兩個相等的

with  x as 
(
select 1 as id,90 as score from dual union all
select 2 as id,80 as score from dual union all
select 3 as id,70 as score from dual
),
y as (
select 1 as id ,'John' as name from dual union all
select 2 as id,'Adam' as name from dual union all
select 2 as id,'Adam2' as name from dual union all
)
select x.id,x.score,y.name from x
left join y on x.id=y.id

 

這時的結果集就是多了一條,所以,在使用left join進行表關聯時

還是很需要注意這個問題的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章