left join???

水猿兵团五哥 2010-03-08 11:36:15
left join在跨数据库查询的时候有没有限制?
刚刚在用left join跨数据库查询的时候发现没有
进行筛选查询,得到的结果是a表的所有数据,很
奇怪,请高人们指点!
谢谢!

select a.porder,a.eda,a.code, a.kvol,a.tjitu,b.kvol as bkvol,b.tjitu as btjitu from testsks.dbo.xslip as a
left join testtpics31.dbo.xslip as b
on a.porder=b.porder
and a.eda=b.eda
and a.code=b.code
and a.vendor=b.vendor
and a.kvol<>a.tjitu
and a.tjitu<>b.tjitu
...全文
65 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
水猿兵团五哥 2010-03-08
  • 打赏
  • 举报
回复


谢谢!应该是这样了,想起来之前有人和我说过条件放在WHERE里,
我以前放在on里也没发现什么异常,没在意这些!
感谢各位,受教咯!
结了!
东那个升 2010-03-08
  • 打赏
  • 举报
回复
引用 7 楼 machong8183 的回复:
引用 5 楼 ldslove 的回复:把筛选条件放在WHERE后面。 放在ON后面是无论满足不满足a表的数据都是全部显示。
貌似这样,能告之原理不?


这个原理就是LEFT JOIN 的原理。看联机帮组
SQL77 2010-03-08
  • 打赏
  • 举报
回复
引用 7 楼 machong8183 的回复:
引用 5 楼 ldslove 的回复:把筛选条件放在WHERE后面。 放在ON后面是无论满足不满足a表的数据都是全部显示。
貌似这样,能告之原理不?

执行顺序问题,先WHERE 再连接了,你可以看执行计划
水猿兵团五哥 2010-03-08
  • 打赏
  • 举报
回复
引用 5 楼 ldslove 的回复:
把筛选条件放在WHERE后面。

放在ON后面是无论满足不满足a表的数据都是全部显示。

貌似这样,能告之原理不?
水猿兵团五哥 2010-03-08
  • 打赏
  • 举报
回复
我知道left join是左表的所有内容,但是我后面有条件筛选,
所以得到结果应该是筛选出来的所有结果,而现实是这个表里的所有数据
而非筛选过的。
我不用INNER JOIN是因为我怕两张表中的数据不一致的时候,我想也能看得到
东那个升 2010-03-08
  • 打赏
  • 举报
回复
把筛选条件放在WHERE后面。

放在ON后面是无论满足不满足a表的数据都是全部显示。
huyongi 2010-03-08
  • 打赏
  • 举报
回复
按照你的语句left join 就是显示a表的全部数据。
如果你想显示a表和b表条件一样的数据的话,将left join 改为join就可以了
如果你想显示b表的所有数据,就把left join 改为 right join
SQL77 2010-03-08
  • 打赏
  • 举报
回复
引用 1 楼 wufeng4552 的回复:
SQL code进行筛选查询,得到的结果是a表的所有数据leftjoin-->innerjoin

同意,楼主应该是内联接
SQL77 2010-03-08
  • 打赏
  • 举报
回复
跨库只要指定库名.所有者.对象名,同一服务器没问题,

得到的结果是a表的所有数据,很
奇怪,请高人们指点!


LEFT JOIN 本来就是左表全显示,晕
水族杰纶 2010-03-08
  • 打赏
  • 举报
回复
进行筛选查询,得到的结果是a表的所有数据
left join
-->
inner join

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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