1

私がすることができます:

SELECT t2.value + sum(t3.value)
FROM tableA t2, tableB t3
WHERE t2.somekey = t3.somekey
GROUP BY t3.somekey

しかし、これを行う方法は?

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

t1FROM 句で更新対象のテーブルを指定できないため、MySQL では違法とのことです。

4

2 に答える 2

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;
于 2010-05-04T13:56:40.627 に答える
-1

このコンテキストでは使用できないMySQLの拡張子を使用しています。GROUP BY

次の値があるとします。

tableA

value somekey
1     1
2     1

tableB

value somekey
3     1
4     1

このサブクエリ:

    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

8または のいずれかを返します。指定されたキーのランダムな9を計算SUM(b.value) = 7して追加します。A

このサンプル データの速度をどの値に更新しますか?

于 2010-05-04T13:51:15.640 に答える