Oracle中on与where的区别

  • Post author:
  • Post category:其他




Oracle中on与where的区别

在SQL中,where 和 on 都是用于限制 select 查询结果的条件语句,但它们之间有一些区别。

  • where:是在执行 select 语句之后,对结果集进行过滤的条件。它是对查询结果集进行筛选的条件,可以使用比较操作符、逻辑操作符等条件表达式对结果集进行过滤,对于不符合条件的行进行过滤,只返回满足条件的行。
  • on:是用于连接两张或多张表的条件语句。它是在连接两张或多张表时,对连接的条件进行筛选。on 条件只会筛选连接的两张表中的匹配行,在这些匹配行中执行 select 语句,因此ON条件是在连接之前执行的。
on where
先对表进行筛选,再生成关联表 先生成关联表,再对关联表进行筛选
执行的优先级高于 left join 执行的优先级低于 left join
用于在进行多表查询的时候确定两个表之间的连接关系 用于在单表查询或多表查询的时候筛选数据
  • on:会先根据on后面的条件进行筛选,条件为真时返回该行,由于on的优先级高于left join,所以left join关键字会把左表中没有匹配的所有行也都返回,然后生成临时表返回
  • where:对与行的筛选是在left join之后的,也就是生成临时表之后才会对临时表进行筛选

另外,在使用 outer join(外连接)时,on 和 where 条件的执行顺序可能会影响查询结果。如果将筛选条件放在where 子句中,那么在使用outer join 时,可能会丢失一些外连接表中的数据。因此,在使用outer join时,应该将筛选条件放在 on 子句中。



版权声明:本文为Libraxu原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。