我們通常認爲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進行表關聯時
還是很需要注意這個問題的。