当在INNER JOIN加条件时在ON后面A.ID=B.ID AND A.ID=1和INNER JOIN加条件时在ON后面A.ID=B.ID WHERE A.ID=1有什么区别

doubao198173 2006-04-03 08:50:10
当在INNER JOIN加条件时在ON后面A.ID=B.ID AND A.ID=1和INNER JOIN加条件时在ON后面A.ID=B.ID WHERE A.ID=1有什么区别
...全文
7210 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
marco08 2006-05-24
  • 打赏
  • 举报
回复
学习...
aimcy 2006-05-24
  • 打赏
  • 举报
回复
楼上的,非inner join肯定有区别的

我也认为where是join后对结果进行过滤,on是对表过滤
yoncen 2006-05-24
  • 打赏
  • 举报
回复
有區別的.建議將條件加在on中,如果加在where中,效率低了不說,還會出現意想不要的效果.
qw_study 2006-05-24
  • 打赏
  • 举报
回复
同意 'jxwangjm(师铭)' 的
在查询优化时
一般都遵循先投影,再选择,再联结
因为联结所号时间资源是最大的
而INNER JOIN 是:
再联结的同时进行选择,
也就是 扫描表1的每一条记录,然后在表二中筛选满足条件的记录加入最终表,
而用 WHERE 的话
数据库是:扫描表1的每一条记录,同时将表二中所有的记录加入最终表,
然后再根据WHERE 的条件进行筛选,耗时间和 空间资源都比INNER JOIO 大的多!!!
强调一条,在数据库里,比较2记录一次比合并2记录一次花的时间要小的多!


jxwangjm 2006-04-06
  • 打赏
  • 举报
回复
有不同的。
create table ta(
kno int primary key,
c1 int)
create table tb(
kno int primary key,
c2 int)
insert into ta(kno,c1) select 1,100 union select 2,90
insert into tb(kno,c2) select 1,70 union select 3,null
用select ta.kno,ta.c1,tb.c2
from ta left join tb
on ta.kno=tb.kno會得到兩條記錄
用select ta.kno,ta.c1,tb.c2 from ta,tb
where ta.kno=tb.kno只有一條記錄
kuenpengmu 2006-04-05
  • 打赏
  • 举报
回复
执行结果完全相同
但是个人认为写成inner join on A.ID=B.ID and A.ID=1这样的执行效率会比较高一些
在A.ID=B.ID WHERE A.ID=1这种情况下where语句会在连接后的结果集中进行筛选,而第一种情况下筛选是在连接之前执行的,在记录很多的情况下会看出不同

不知道我的理解对不对:)
aniude 2006-04-04
  • 打赏
  • 举报
回复
平时写有时候写on 有时候写where,不觉得有什么不同
sunyong790903 2006-04-03
  • 打赏
  • 举报
回复
长见识
TombFigure 2006-04-03
  • 打赏
  • 举报
回复
又见高人
学习
zjcxc 元老 2006-04-03
  • 打赏
  • 举报
回复
一样的.

非innter joion 才有区别
doubao198173 2006-04-03
  • 打赏
  • 举报
回复
可能我举的这个例子最后的结果没有区别,但是我记得两者之间有区别的
huailairen 2006-04-03
  • 打赏
  • 举报
回复
没有区别

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧