★★★★ 查询条件 放在 join on 里和 where 里的区别

hangzhou_hammer 2008-03-21 09:50:16
select * from a inner join b on a.id=b.aid where b.nameid=9

select * from a inner join b on (a.id=b.aid and b.nameid=9)
得到的 结果 居然 不一样……
实际只有下面的语句才有用;
真不知道为什么……
...全文
153 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
hangzhou_hammer 2008-04-07
  • 打赏
  • 举报
回复
不好意思,这个结果应该是一样的…… 是我后面的条件 有问题;引起骚乱了…… 真是不好意思啊~`
tjhdaxia 2008-03-25
  • 打赏
  • 举报
回复
select * from a inner join b on a.id=b.aid where b.nameid=9

select * from a inner join b on (a.id=b.aid and b.nameid=9)

结果是有可能不一样的。

解释
第1条SQL语句是 on a.id=b.aid 这里已经是经过where b.nameid=9 筛选之后的第二次筛选了。
第2条SQL语金是 on (a.id=b.aid and b.nameid=9) 同时在完全连接的情况下进行筛选而a表并没有被筛选。
忆轩辕 2008-03-25
  • 打赏
  • 举报
回复
感觉应该是一样的。。。。。。。。。
henreash 2008-03-25
  • 打赏
  • 举报
回复
关注
cxmcxm 2008-03-22
  • 打赏
  • 举报
回复
内连接应该是相同的吧,左或右连接可能不同
wumg 2008-03-22
  • 打赏
  • 举报
回复
select * from a,b where a.id=b.aid and b.nameid=9

应该一样吧?
Lyw110 2008-03-22
  • 打赏
  • 举报
回复
关注中,给些数据了,个人觉得这里好象先筛选再连接,跟先连接后筛选都一样吧
hui_hui_2007 2008-03-22
  • 打赏
  • 举报
回复
楼主可否给一个测试数据,我也认为,结果应该是一样的。
只是第一种写法更规范。
RoverX 2008-03-22
  • 打赏
  • 举报
回复
关注!!!
山之魂2 2008-03-21
  • 打赏
  • 举报
回复
顶一个
hui_hui_2007 2008-03-21
  • 打赏
  • 举报
回复
第一种写法对.先连接,然后where
第二种不好.逻辑不清.
ziping 2008-03-21
  • 打赏
  • 举报
回复
前一个是连接得出数据后再筛选,后一个是连接的时候就筛选
xlongbuilder 2008-03-21
  • 打赏
  • 举报
回复
关注。。。。。。
henreash 2008-03-21
  • 打赏
  • 举报
回复
应该是先join后筛选先筛选后join的区别吧

34,837

社区成员

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

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