update table set num = (select num+1 from table where id=1) where id=1
运行以上SQL语句,返回错误信息:“You can’t specify target table ‘表名’ for update in FROM clause”
意思是在同一语句中不能先select出同一表中的某些值,再update这个表
解决方式:
在select的结果后加一层中间过渡
update table set num = (
select * from (select num+1 from table where id=1) t
) where id=1
本文探讨了在SQL语句中直接使用目标表进行自我引用更新时出现的错误,并提供了一种通过添加中间过渡表的方法来解决这一问题。这种技巧避免了在同一语句中先select再update同一表的限制。
1637

被折叠的 条评论
为什么被折叠?



