Mysql更新多个表

时间:2012-09-04 07:56:12

标签: mysql

我想做这样的事情:

create table t1 (id varchar(20) NOT NULL default '', money decimal(20,4) NOT NULL default '0');

create table t2 (id varchar(20) NOT NULL default '', money decimal(20,4) NOT NULL default '0');

insert into t1 values('1',1);

insert into t2 values('1',2);
insert into t2 values('1',3);

我希望将所有t2的相同id的钱添加到t1,所以我使用以下sql:

update t1,t2 set t1.money = t1.money + t2.money where t1.id = t2.id

我认为表t1中id'1'的钱应该是

  

1 + 2 + 3 = 6

但实际上是

  

1 + 2 = 3;

它似乎总是添加t2的第一行。

mysql> select * from t1;

+----+--------+
| id | money  |
+----+--------+
| 1  | 3.0000 |
+----+--------+

如何获得

的值
  

1 + 2 + 3

一个sql。

2 个答案:

答案 0 :(得分:1)

UPDATE t1 SET t1.money = (SELECT SUM(t2.money) + t1.money FROM t2 WHERE t1.id = t2.id)

答案 1 :(得分:0)

您应该使用内部查询:

update t1 set t1.money = (select sum(t1.money) from t1) + (select sum(t2.money) from t2 where t2.id=t1.id)

或类似的东西。