0

假设我有table1

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

table2

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

我的目标是获得按 ID1 分组table1的计数table2总和,结果update将是:

 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 回答