例如,我有一个SQL查询:
select table1.*, table2.* from table1
left join table2 on table1.id=table2.id AND table2.someCol>123 (put it here)<p>
where table2.someCol>123 (or put it here)
似乎两个位置都可以放置过滤条件,并且是SAME含义,是吗?
答案 0 :(得分:5)
不,它不一样。当你左/右加入时,这很重要。如果在Where子句中引用where条件引用左或右连接表,则基本上将其转换为内连接。如果您添加OR referenced_left_or_right_joined_column IS NULL
,则会再次进行左侧或右侧加入。