Oracle中on与where的区别

where和on在SQL中都用于限制查询结果,但作用不同。where是对查询结果集进行筛选,而on在多表连接时定义连接条件。在leftjoin中,on的优先级高于where,where在生成临时表后筛选。在外连接查询中,应将筛选条件放在on子句中以避免丢失数据。
摘要由CSDN通过智能技术生成

Oracle中on与where的区别

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

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

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值