SQL Server inner join 的问题

ljl_7880 2006-11-03 10:00:10
本人遇到了以下问题:在凉台服务器上,一台打过补丁了,一台没有
现在有表A字段为代号(dh)、保管(bg)、路线,
记录为:
11 00 AA
11 00 BB
现在有表B字段为代号(dh),保管(bg)
记录如下:
11 CC
11 DD
现在执行如下SQl
update a set a.bg=b.bg from a inner join b on a.dh=b.ljh
在没打补丁的服务器上SQL Server里面执行结果如下:
11 DD AA
11 DD BB
在打补丁的服务器上SQL Servrer 里面得到的结果如下:
11 CC AA
11 DD BB
而且对于以上结果在正式表测试的时候,得到的记过都为
11 DD AA
11 DD BB

以上情况仅仅在写存储过程的时候遇到了,不知道各位大侠遇到过这个问题没有,如果遇到了,是如何解决的?期盼回复

...全文
402 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
ljl_7880 2006-11-06
  • 打赏
  • 举报
回复
那个地方写错了,应该是dh
EmeraldSword 2006-11-05
  • 打赏
  • 举报
回复
恩?LZ的ljh 是什么?
playwarcraft 2006-11-04
  • 打赏
  • 举报
回复
你選擇
11 DD AA
11 DD BB
而不是
11 CC AA
11 DD BB
的原因是什麼? 以B表的bg為大的???

update a set a.bg=c.bg from a
inner join (select dh,max(bg) as bg from b group by dh) c
on a.dh=c.dh
ljl_7880 2006-11-04
  • 打赏
  • 举报
回复
谁也不知道运行的结果是什么样的,按照原理,这个update是出错的,原因在于第二个表是结果集,不是标量
按照这个说法,现在我想得到
11DDAA
11DDBB
而不是
11CCAA
11DDBB
这条SQL 该如何实现呢
ljl_7880 2006-11-04
  • 打赏
  • 举报
回复
我在两个数据库里面得到的结果不一致,一个数据库当有两个的时候,取一个更新;另外一个数据库就是取两个分别更新
wwh999 2006-11-04
  • 打赏
  • 举报
回复
这个INNER JOIN 跟打没打补丁有什么关系?
zheninchangjiang 2006-11-04
  • 打赏
  • 举报
回复
谁也不知道运行的结果是什么样的,按照原理,这个update是出错的,原因在于第二个表是结果集,不是标量
CSDMN 2006-11-04
  • 打赏
  • 举报
回复
连接条件不够,考虑设计是否有问题再考虑如何解决,因为你自己也没法说那个结果是对的


ljl_7880 2006-11-04
  • 打赏
  • 举报
回复
不是想选择大的,我是想更新成一个就行,而不是两个,因为这个地方是分析去保管员那里领料,一个零件,在一天之中,肯定去一个保管那里最好,所以不一定最大,不过楼上您的方法可行,是否有更优化的呢?
playwarcraft 2006-11-03
  • 打赏
  • 举报
回复
现在有表A字段为代号(dh)、保管(bg)、路线,
11 00 AA
11 00 BB
现在有表B字段为代号(dh),保管(bg)
记录如下:
11 CC
11 DD

如果
update a set a.bg=b.bg from a inner join b on a.dh=b.ljh
结果
11 DD AA
11 DD BB
或者
11 CC AA
11 DD BB
个人认为都是正确的:)
因为
a inner join b on a.dh=b.ljh
出来的结果会有4条记录:
11 00 AA 11 CC
11 00 AA 11 DD
11 00 BB 11 CC
11 00 BB 11 DD

34,838

社区成员

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

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