业务说明,首先查询出一条数据,然后再更新着跳数据。
比如:
update user set age = (select age from user where user_name = 'tom') + 1 where user_name = 'tom';
会执行错误
You can't specify target table '表名' for update in FROM clause错误
错误原因:mysql不能同时查询并且修改同一条数据(oracle)不会有这个错
解决方法:通过建立中间表的方式,修改数据
update user set age = (select b.age from (select user_name,age from user where user_name = 'tom')b where b.user_name = 'tom') + 1 where user_name = 'tom';