从select(多行)更新查询数据时的MySQL查询语法

时间:2013-10-31 15:29:38

标签: mysql sql

我想更新test1表,我从test2表中获取数据。我正在尝试使用JOIN,但它无法正常工作。

我的查询:

UPDATE `test1` INNER JOIN `test2` ON `test2`.`where`=`test1`.`id` SET `test1`.`value`=`test1`.`value`+`test2`.`add`

我在test2中有两条记录,在test1中有一条记录。

测试1:

id => 1
value => 0

的Test2:

id => 1
where => 1
add => 1

id => 2
where => 1
add => 2

此查询的结果是test1value = 1,而不是3.这在SQL中是否可行?

抱歉我的英文。

2 个答案:

答案 0 :(得分:0)

UPDATE test1 
SET test1.value = test1.value + test2.add
FROM test1 INNER JOIN test2 ON (test1.ID = test2.ID)
GO

我相信这就是你想要做的。

答案 1 :(得分:0)

您需要加入一个子查询,该子查询获取按add列分组的where列的总和。试试这个

UPDATE `test1` t1
INNER JOIN (
  SELECT `where`, SUM(`add`) as `add` FROM test2 GROUP BY `where`
) as t2
ON t1.id = t2.`where`
SET t1.`value` = t2.`add`

http://sqlfiddle.com/#!2/2e07e/1