MySQL不允许SELECT FROM后面指向用作UPDATE的表
报错信息:You can’t specify target table ‘xxx’ for update in FROM clause
报错语句:
update xxx t1 set a = (select a from xxx q where t1.b = q.b) where t1.a is null;
原因:MySQL不允许SELECT FROM后面指向用作UPDATE的表
解决:查询xxx表为为临时表并起别名,在进行条件过滤即可
update xxx t1
set
a = (select lsb.a from (select a from xxx q)lsb where lsb.b = t1.b)
where t1.a is null;
结论:
mysql与oracle的不同点是mysql不能在从句中使用主句使用的表,但是oracle是可以的,这是mysql和oracle的sql的不同点之一