帮我搞定一条SQL语句啊?谢谢了,是逻辑高手快帮手啊(100分)

  • 主题发起人 诸葛白痴
  • 开始时间

诸葛白痴

Unregistered / Unconfirmed
GUEST, unregistred user!
二个表:
A: 三个字段A、B、C
B: 三个字段A、B、C
A表内容:
A B C
1 2 1
2 3 2
4 5 5
B表内容:
A B C
1 3 NULL
4 6 NULL
现要将B表的C字段更新成等行A表符合在A与B之间的C总和,意思就是C = Sum(A.C) Where
A.A between B.A and B.B and A.B between B.A and B.B
想得到的结果如下
B表:
A B C
1 3 3
4 6 5
可是我用的语句是:Update B Set C = (Select Sum(A.C) From A,B Where A.A between
B.A and B.B and A.B between B.A and B.B) From A Where A.A between B.A and
B.B and A.B between B.A and B.B

可得到的列值是两列都是10啊,为什么,谁能帮我啊!
A B C
1 3 10
4 6 10
 
update b bbb set bbb.c=(Select Sum(a.C) From a Where a.A between bbb.A and bbb.B and a.B between bbb.A and bbb.B)
 
不对吧,缺少GROUP BY 的分类汇总(SUM),只能局限于个别数据库。
说说你用了什么类型的数据库? 或许能简单搞定,或许只能通过别的方式搞定。
 
SQL Server啊
 
update B
set B.c=
(
select sum(A.c)
from a
where (A.a between B.a and B.b) and (A.b between B.a and B.b)
)

我试过了,执行结果正确
 
多人接受答案了。
 
顶部