update yg set salary = salary*0.1 where salary in
(
SELECT max(salary) salary FROM yg
)
看似逻辑没有问题的一条sql在mysql下执行就这样报错:
You can’t specify target table ‘你的表名’ for update in FROM clause
经了解,它是告诉你不能在对同一个表update的同时select
既然如此那就包装一下,骗它
这并不是同一个表?
update yg set salary = salary*0.1 where salary in
(
select a.salary from (SELECT max(salary) salary FROM yg) as a
)
修改的逻辑很简单,就是把子查询的结果当作一个结果集包装一次