这里 A 是数据库,B 是 A 的表,C,D,E,F 是表 B 的列。
更新 AB SET C = (SELECT SUM(D) 从 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 经常崩溃。任何指针或帮助表示赞赏。这同样适用于优化查询的任何方法......