1

私はこのようなことをしたい:

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);

同じIDのt2のお金をすべて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

1つのSQLで。

4

2 に答える 2

1
UPDATE t1 SET t1.money = (SELECT SUM(t2.money) + t1.money FROM t2 WHERE t1.id = t2.id)
于 2012-09-04T08:03:23.797 に答える
0

内部クエリを使用する必要があります。

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

または同様のもの。

于 2012-09-04T08:03:05.810 に答える