求助 先 where条件过滤 还是先 join on

d604060189 d604060189 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
oracle 在做多表关联查询的时候 是先 进行 where 条件的过滤 还是先进行 表之间的连接呢。
一直以来 我都 认为 是要先进行 where 过滤之后 才进行表之间的关联的。然而今天做了一个实验
测试数据如下。
WITH TEMP_TAB1 AS 
(
SELECT 1 ID , 'MINGMING' NAME ,0 SCORE FROM DUAL UNION ALL
SELECT 9 ID , 'MINGMING' NAME ,20 SCORE FROM DUAL UNION ALL
SELECT 2 ID , 'HUAHUA' NAME , 80 SCORE FROM DUAL UNION ALL
SELECT 3 ID , 'NIUNIU' NAME, 90 SCORE FROM DUAL UNION ALL
SELECT 4 ID , 'MEI' NAME ,70 SCORE FROM DUAL UNION ALL
SELECT 5 ID , 'YOU' NAME, 40 SCORE FROM DUAL
) ,TEMP_TAB2 AS
(
SELECT 1 ID , 'REN' NAME , 20 SCORE FROM DUAL UNION ALL
SELECT 3 ID , 'NIUNIU' NAME ,30 SCORE FROM DUAL UNION ALL
SELECT 4 ID , 'RURU' NAME ,60 SCORE FROM DUAL UNION ALL
SELECT 5 ID , 'HONGHONG' NAME ,0 SCORE FROM DUAL
) SELECT *
FROM TEMP_TAB1 A
inner JOIN TEMP_TAB2 B
ON A.ID = B.ID
and b.score <> 0
--and 10/a.score = 0.25
where 10/b.score = 0.5

如果先执行 where后面的条件 在执行 on 的话 应该会报错的。但是现在没有报错。 那是不是 说明 先执行表之间的关联等关联出结果之后 在进行where条件过滤
...全文

相关推荐

left join 过滤条件写在on后面和写在where 后面的区别

left join 过滤条件写在on后面和写在where 后面的区别

shangshibiao

mysql中left join设置条件在on与where时的用法区别分析

主要介绍了mysql中left join设置条件在on与where时的用法区别,结合实例形式分析了mysql中left join设置条件在on与where时的相关用法区别与操作注意事项,需要的朋友可以参考下

weixin_38706455

MySQL left join操作中on和where放置条件的区别介绍

优先级 两者放置相同条件,之所以可能会导致结果集不同,就是因为优先级。on的优先级是高于where的。 首先明确两个概念: LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。 数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户。 在left join下,两者的区别: on是在生成临时表的时候使用的条件,不管on的条件是否起到作用,都会返回左表 (table_name1) 的行。 where则是在生成临时表之后使用的条件,此时已经不管是否使

weixin_38519060

sql语句join中on和where的区别

本文简单描述了sql语句join中on和where的区别以及其原理

Java-Dev

深入Oracle的left join中on和where的区别详解

本篇文章是对Oracle的left join中on和where的区别进行了详细的分析介绍,需要的朋友参考下

weixin_38603936
评论 7
收藏 已收藏
分享
返回顶部
d604060189
Oracle 17,133 成员 55,258 内容