社区
MS-SQL Server
帖子详情
where与on,谁的优先级高。
vaccum
2003-03-21 11:12:16
where与on,谁的优先级高。您确定吗?
...全文
201
13
打赏
收藏
where与on,谁的优先级高。
where与on,谁的优先级高。您确定吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
yoki
2003-03-21
打赏
举报
回复
to:happydreamer(黑DD)
我觉得你的例子中2个显然是不一样的
因为第2个多了一个内连接(在判断where的时候)
yonghengdizhen
2003-03-21
打赏
举报
回复
to
“先ON,后WHERE。”
能否说明依据的出处?
从查询引擎的实现角度来说,应该这样..
因为where子句中有可能引用连接产生的结果.如果不在处理连接之后再处理筛选是无法实现的.
从效率上来说连接查询的连接条件必须优先处理,否则产生连接的笛卡尔积用于随后的处理会导致查询的低效率..
hillhx
2003-03-21
打赏
举报
回复
应该是一样的
vaccum
2003-03-21
打赏
举报
回复
“先ON,后WHERE。”
能否说明依据的出处?
HawaiiLeo
2003-03-21
打赏
举报
回复
先ON,后WHERE。
vaccum
2003-03-21
打赏
举报
回复
查不到,MS官方有说明吗?或者ANSI SQL有说明吗?
pengdali
2003-03-21
打赏
举报
回复
SQL会优化的按说是on
愉快的登山者
2003-03-21
打赏
举报
回复
先ON,后WHERE。
19191919
2003-03-21
打赏
举报
回复
是吗?我觉得是一样的。
happydreamer
2003-03-21
打赏
举报
回复
SELECT * FROM table1 a left outer join table2 b on a.jmsbh=b.jmsbh and b.scbz<>2
SELECT * FROM table1 a left outer join table2 b on a.jmsbh=b.jmsbh where b.scbz<>2
这两句话效果是不一样的,用了left join之后不管怎样对左边的表数据都会显示出来,但也受到where条件的限制.第一句的意思是先把dwpdb表里的scbz=2的先过滤掉之后再同gczjzxdwshspb外联, 而第二句的意思则是先外联再过滤,那显然是不一样的
大健
2003-03-21
打赏
举报
回复
学习
kangancn
2003-03-21
打赏
举报
回复
它们不是逻辑运算,不存在先后
w_rose
2003-03-21
打赏
举报
回复
跟优先级没有关系。
把我搞乱了,自然没有答案。
SQL Server对于在where后边的条件,会做一些查询优化。但是SQL Server的查询优化步骤不是可有可无的,用“优先级”来解释查询的内部动作不会有确定的结果。
MySQL left join操作中on和where放置条件的区别介绍
on的
优先级
是
高
于where的。 首先明确两个概念: LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。 数据库在通过连接两张或多张表来返回记录时,都会生成...
on与where的区别
on与where的区别 on是先对表进行筛选再生成关联表,where是先生成关联表再对关联表进行筛选,on执行的
优先级
高
于left join,而where的
优先级
低于left join 当我们使用on关键字时,会先根据on后面的条件进行筛选,条件...
left join-on-where 的区别
1. 摘要 关于这两种写法的重要知识点摘要... on
优先级
比 where
高
,因此,理论上 on-and 写法执行效率比 on-where
高
,速度更快 inner-join 时,不管是对左表还是右表进行筛选,on-and 和 on-where 都会对生成的临时
Hive Left join on 与Where
优先级
问题讨论2
1.对于a表 left join b表 ,过滤条件在on中:忽略a表的过滤条件,b表的过滤条件只会导致不满足条件的记录在b表的所有...on
优先级
高
于 where。SQL1:1543888条。SQL3:1543888条。SQL3 不做过滤空值。SQL2:85756条。
Hive Left join on 与Where 的
优先级
1. select t.* from A f join B t on (f.id = t.id and f.分区=20181111 and t.分区=20181111) 2. select t.* from (select id from A where ...1. 对于a join b,无论过滤条件放到on中还是where中,结果相同。 2...
MS-SQL Server
34,590
社区成员
254,589
社区内容
发帖
与我相关
我的任务
MS-SQL Server
MS-SQL Server相关内容讨论专区
复制链接
扫一扫
分享
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章