如何使用选择组在第二个表中更新表,并将自身作为MySQL中的数据源?

Jad*_*ias 1 mysql mysql-error-1093

我可以做这个:

SELECT t2.value + sum(t3.value)
FROM tableA t2, tableB t3
WHERE t2.somekey = t3.somekey
GROUP BY t3.somekey
Run Code Online (Sandbox Code Playgroud)

但是怎么做呢?

 UPDATE tableA t1
    SET speed = (
        SELECT t2.value + sum(t3.value)
        FROM tableA t2, tableB t3
        WHERE t2.somekey = t3.somekey
        AND t1.somekey = t3.somekey
        GROUP BY t3.somekey
   )
;
Run Code Online (Sandbox Code Playgroud)

MySQL说这是非法的,因为你不能t1在FROM子句中指定更新的目标表.

小智 8

你可以通过重写你的查询来做到这一点:

UPDATE tableA t1, (
   SELECT somekey, SUM(value) value
   FROM tableB t3
   GROUP BY somekey
) t2
SET speed = t1.value + t2.value
WHERE t1.somekey = t2.somekey;
Run Code Online (Sandbox Code Playgroud)