MS SQL Server下的多表关联Update问题

9527 2002-01-14 09:29:15
诸位,我在MS SQLServer 7/2000下作下述操作:

Tmp001(int1 int,int2 int);
int1 int2
---- ----
1 100

Tmp002(int1 int,int2 int);
int1 int2
---- ----
1 1
1 2
执行
Update T1
Set
T1.int2=T1.int2-T2.int2
from
Tmp001 T1,Tmp002 T2
Where T1.int1=T2.int2
得到
int1 int2
---- ----
1 99
,请问大家如何能够得到
int1 int2
---- ----
1 97
请不要使用先求和的形式,别的SQL 系统(如Oracle,sybase)中有无同样病况。



...全文
171 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
9527 2002-01-15
  • 打赏
  • 举报
回复
算了,我放弃了,谢谢大家的参与
9527 2002-01-15
  • 打赏
  • 举报
回复
求解呀,不是我不想用求和,有时候不能用
9527 2002-01-14
  • 打赏
  • 举报
回复
沉底了
9527 2002-01-14
  • 打赏
  • 举报
回复
大家关注一下吧
panther_totem 2002-01-14
  • 打赏
  • 举报
回复
学习。
9527 2002-01-14
  • 打赏
  • 举报
回复
To Naiwer(海阔天空),是描述语句写错了,但是多表关联一对多的更新问题没有错。
Update T1
Set
T1.int2=T1.int2-T2.int2
from
Tmp001 T1,Tmp002 T2
Where T1.int1=T2.int1
^^这里是T2.int1!
大家看看怎末解决,当然对于这个简单的例子,求和后肯定是可以解决的,但是换种复杂的情况,例如还有别的字段参与运算,处理起来简直是没有办法了。



昵称被占用了 2002-01-14
  • 打赏
  • 举报
回复
Update T1
Set
T1.int2=int2-(select sum(int2) as int2 from T2 where T2.int1=T1.int1)

你原来是不是写错了?
Update T1
Set
T1.int2=T1.int2-T2.int2
from
Tmp001 T1,Tmp002 T2
Where T1.int1=T2.int2
^^这里是不是应该是T2.int1?


lxinjun 2002-01-14
  • 打赏
  • 举报
回复
关注
昵称被占用了 2002-01-14
  • 打赏
  • 举报
回复
试过这个语句没有:
Update T1
Set
T1.int2=int2-(select sum(int2) as int2 from T2 where T2.int1=T1.int1)

我想只能用先求和的形式!
9527 2002-01-14
  • 打赏
  • 举报
回复
啊啊啊啊啊

34,590

社区成员

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

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