0
我瞭解JOIN子句中的過濾器,並且在使用外連接時WHERE子句中的過濾器不同。假設我有這兩張桌子。外連接中的過濾器的行爲
table1
id | value
---+------
1 | 11
2 | 12
table2
id | value
---+------
1 | 101
現在,如果我查詢
select a.id as id1, a.value as value1, b.value as value2
from table1 as a
left join table2 on a.id=b.id and a.value=11
結果是這樣的,一個額外的一行值1 = 12
id1 | value1 | value2
----+--------+--------
1 | 11 | 101
2 | 12 | NULL
但是,如果我把過濾器where子句中,它給我我想要的。問題是爲什麼它的行爲如此?
上子句中的謂詞確定從左側的行是否與一個連接在右邊。 where子句中的謂詞在所有連接行匹配並且外部行保留在連接結果之後運行。 –