ここで、A はデータベース、B は A のテーブル、C、D、E、F はテーブル B の列です。
UPDATE AB SET C = (SELECT SUM(D) FROM AB t2 WHERE t2.E=ABE AND t2.F=2013 GROUP BY E) WHERE F=2013;
これは Oracle PL/SQL では正常に機能しますが、MySQL では次のエラーが発生します。
エラー コード: 1093。FROM 句 0.000 秒で更新のターゲット テーブル 'B' を指定することはできません
私はそれを解決しようとしました:
CREATE TABLE t2 AS select * FROM B;
元のクエリを次のように変更しました
UPDATE AB SET C = (SELECT sum(D) FROM t2 WHERE t2.E=ABE AND t2.F=2013 GROUP BY E) WHERE F=2013;
現在、実行には時間がかかり、MySQL は頻繁にクラッシュします。ポインタやヘルプをいただければ幸いです。クエリを最適化する方法についても同じことが言えます....