you can't specify target table for update in from

asset表里ip相同的字段有多个,如今要完成一个功能是,根据一个ip,得到任意一个id,当asset_extension表里department=0时,才根据该id更新asset_extension表里 的department为1:ip

update asset_extension t1 set t1.department=4 where t1.asset_id=(select t2.id from asset t2 join asset_extension t1 on t2.id=t1.asset_id where t1.department=0 and t2.ip='192.168.58.8' group by t2.ip)ci

结果运行时报错:you can't specify  target table 't1' for update in from clause.get

改为下面这样便可,即中间增长一个过渡,不要直接在t1表时同时查询和更新:io

update asset_extension t1 set t1.department=4 where t1.asset_id=(select * from(select t2.id from asset t2 join asset_extension t1 on t2.id=t1.asset_id where t1.department=0 and t2.ip='192.168.58.8' group by t2.ip) as subtable);table

相关文章
相关标签/搜索