问题
在使用MySQL时,我们有时候会遇见这样的情况,希望将A表的某些记录的某个字段更新为指定某条记录的某个字段,在Oracle中,我们可以这样:
update student t1 set t1.xx = (select t2.xx from student t2 where t2.id = 1);
但是在MySQL中,你会得到这样的结果:
You can't specify target table 't1' for update in FROM clause
那我们该如何解决?
解决办法
对于这种情况,我们可以使用inner join
的方式解决,就像这样:
update student t1 inner join (select t2.grade from student t2 where t2.id = 1) t3 set t1.grade = t3.grade;