Advertisement

SQL——left join 条件on vs where的区别

阅读量:

在日常运用SQL进行数据操作时,用户常常会遇到一个疑问:在连接两个数据表的过程中,应当将相关条件置于ON子句之后,还是放置于WHERE子句之后。以下将对这两种方式的差异及其适用场景进行详细说明。

( 一 )区别

在数据库执行关联操作(如 left join / right join / full join / inner join)以连接两张或多张表时,系统会首先生成一张临时表作为中间结果,随后基于该临时表进行条件筛选和过滤,最终将处理后的数据返回给用户。

当采用 left join 时,on 子句与 where 子句所附加的条件存在以下差异:

  • on 子句中的条件用于生成临时表时的判断依据,即使该条件不成立,左表中的所有记录仍会被保留
  • where 子句中的条件则用于在临时表生成之后进行进一步的过滤操作,不符合该条件的数据将被完全排除

上述差异的根本原因在于 left join、right join、full join 和 inner join 的特殊处理机制。无论 on 子句中设置的条件是否为真,left 或 right 表中的记录都会被保留下来。full join 则融合了 left join 与 right join 的特性。而 **inner join 不具备这一特殊性,在 on 和 where 子句中设置相同条件时,所得

全部评论 (0)

还没有任何评论哟~