对应的错误信息:
SQL语句:
update arc a set title=(select title from arc where id=a.cpid) where bid=1 limit 600;
我的意图是 更新一本书的章节标题,标题取之与 arc表中另外一本书的章节标题,运行即报上面的错误,
错误原因是:MySQL 不允许在 UPDATE 查询中直接引用正在被更新的表,以避免潜在的数据一致性问题。
一番操作后得到的解决方案是 临时表法,解决思路:
把需要的数据存入到临时表,这样就不存在引用同一张表的问题了。
CREATE TEMPORARY TABLE temp_table AS
SELECT id,title FROM arc WHERE bid = 2;
update arc a set title=(select title from temp_table where id=a.cpid) where bid=1 limit 600;
执行成功后再把创建的临时表删除
DROP TEMPORARY TABLE IF EXISTS temp_table;
评论 (0)