gpt4 book ai didi

mysql - oracle plsql 到 mysql 查询更新

转载 作者:行者123 更新时间:2023-11-29 00:30:08 27 4
gpt4 key购买 nike

这里A是数据库,B是A的表,C,D,E,F是表B的列。

UPDATE A.B SET C = (SELECT SUM(D) FROM A.B t2 WHERE t2.E=A.B.E AND t2.F=2013 GROUP BY E) WHERE F=2013;

这在 Oracle PL/SQL 中运行良好,但在 MySQL 中出现以下错误:

Error Code: 1093. You can't specify target table 'B' for update in FROM clause 0.000 sec

我尝试用以下方法解决它:

CREATE TABLE t2 AS select * FROM B;

然后将原来的query修改为

UPDATE A.B SET C = (SELECT sum(D) FROM t2 WHERE t2.E=A.B.E AND t2.F=2013 GROUP BY E) WHERE F=2013;

现在它需要很长时间才能运行,而且 MySQL 经常崩溃。任何指针或帮助表示赞赏。这同样适用于任何优化查询的方法....

最佳答案

使用连接:

UPDATE A.B t1
JOIN (SELECT E, SUM(D) sumD
FROM A.B
WHERE F = 2013
GROUP BY E) t2
USING (E)
SET C = sumD
WHERE F = 2013

关于mysql - oracle plsql 到 mysql 查询更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16976536/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com