0

私が持っているとしましょうtable1

 ID1 | COUNT 
-----------
  1  | 0 
  2  | 0

table2:

 ID2 | COUNT|ID1
-----------------
  1  | 1    | 1
  2  | 2    | 2
  3  | 3    | 1

私の目標は、ID1 でグループ化されたtable1カウントの合計を取得することです。結果は次のようになります。table2update

 ID1 | COUNT 
-----------
  1  | 4
  2  | 2

私を混乱させるのは

SELECT * 
FROM table2 t2 left outer join table1 t1 on t1.id1=t2.id1;

3行を返しますが、

UPDATE table2 t2 left outer join table1 t1 on t1.id1=t2.id1
SET  t1.count=t1.count+t2.count;

2行だけを更新し、生成します

 ID1 | COUNT 
-----------
  1  | 1
  2  | 2

update適切なステートメントが何であるかについてのアイデアを持っている人はいますか? PS私は何かをすることができることを知っていますSUMが、私の場合table1は よりもはるかに多くのレコードがtable2あるため、合計は非効率的です。

4

1 に答える 1

0

サブクエリでこれを行うことができます

UPDATE table1 t1 SET `t1.COUNT`=(SELECT SUM(`t2.COUNT`) 
  FROM table2 t2 WHERE t1.ID1=t2.ID1)

テーブル全体を更新します。

特定の ID に制限したい場合は、それらを指定するだけです。追加:

WHERE t1.ID1=<some id>
于 2013-02-04T19:50:34.293 に答える