0
外部結合を使用する場合、JOIN句とWHERE句のフィルタが異なることを理解しています。私はこれらの2つのテーブルがあるとしましょう。今、私は外部結合のフィルタの動作
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
結果は、この、VALUE1で余分な行をであるために照会する場合
table1
id | value
---+------
1 | 11
2 | 12
table2
id | value
---+------
1 | 101
= 12
id1 | value1 | value2
----+--------+--------
1 | 11 | 101
2 | 12 | NULL
しかし、私はwhere句にフィルタを入れた場合、それを私が欲しいものを私に与えます。問題はなぜそれがこのように振舞うのか?
句の中の述語は、左サイドからの行が1つを用いて接合するか否かを判断します右側に。 where句の述語は、結合されたすべての行が一致した後に実行され、外側の行は結合の結果として保存されます。 –