主题:【求助】SQL怎样用一个表中的信息来更新另外一个表 -- 铁手

大河奔流 导读 复 10 阅 17743

全看 分页 树展 一览 主题

2016-04-08 15:02:55
主题:4189313
铁手
铁手`352`/bbsIMG/upload/face/352.gif`70`45489`39490`493309`正四品上:正议大夫|忠武将军`2003-05-03 11:59:57`
【求助】SQL怎样用一个表中的信息来更新另外一个表 3

最近碰到一个道理、逻辑都讲的通,但是实际上行不通的问题。请大家帮忙看看是怎么一回事。

数据库中两个表,一个 A 一个B,A 和B有一定关联性。准备通过这个关联性来把B中的数据更新到A中。为简化,举例如下。

表A两个字段:ID,Points 表B两个字段:ID,Total

表A中有如下数据

ID Points
12 1
12 2
12 3
12 4
13 11
13 12
13 13
13 14

表B中有如下数据

ID Total
12 0
13 0

我想把表A中的Points值更新到表B中相对应的ID行中,在上面这个例子里,就是把表B中ID=12的Total值更新为 10 (1+2+3+4),ID=13的Total值更新为 50 (11+12+13+14)。

直觉和道理上来说,用下面的SQL语句:

UPDATE B,A SET B.Total=B.Total+A.Points WHERE B.ID=A.ID

结果是表B中,ID=12的Total值是1,ID=13的Total值为11,也就是只加了表A中的第一个,后面的值都没有加上。

后来用下面的语句就对了:

UPDATE B,(SELECT ID,SUM(Points) AS SumP FROM A GROUP BY ID) AS C SET B.Total=B.Total+C.SumP WHERE B.ID=C.ID

语句显得有些复杂,而且执行过程中还要弄出个临时表。

基本上看起来 UPDATE A,B 这样的语句需要 A和B中的值一一对应。逻辑上感觉第一个语句简单明了。哪位帮忙给解释一下?或者有没有别的方式可以实现需要的效果?


  • 本帖 10 回复
关键词(Tags): #更新多表#SQL
2016-04-08 15:02:55

全看 分页 树展 一览 主题