【发布时间】:2018-02-04 21:16:45
【问题描述】:
如果我在加入时进行过滤,我会得到以下结果: filtering on join
如果我在哪里过滤 Filtering on where
为什么我会得到不同的结果? 有什么不同? 什么时候需要在join中使用过滤器,什么时候需要在哪里使用过滤器?
【问题讨论】:
如果我在加入时进行过滤,我会得到以下结果: filtering on join
如果我在哪里过滤 Filtering on where
为什么我会得到不同的结果? 有什么不同? 什么时候需要在join中使用过滤器,什么时候需要在哪里使用过滤器?
【问题讨论】:
差异的原因是使用了LEFT JOIN。
当您在WHERE 子句内的LEFT JOIN 的RIGHT 表上指定过滤器时,由于NULL 比较,连接转换为INNER JOIN。
右表上的过滤器应该总是并且只能在ON子句中指定。
【讨论】: