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)
还没有任何评论哟~
