今天多表关联时,想从一表中查出其中的一个全部字段,而后根据该字段删除相关的三张表,语句以下:sql
delete t1 t2,t3 from asset t1 join (asset_itsm t2,asset_distinguish_info t3) on (t1.id=t2.asset_id And t1.id=t3.assetId) where t1 .identify in (select SEARCH_CODE from asset_itsm);ide
结果提示: You can't specify target table 't2' for update in FROM clause。ui
出现这一错误提示的缘由是:在一个sql语句中,在同一张表中进行了两种操做,如上句即对asset_itsm这张表同时进行了select和delete操做,虽然逻辑上是select先,delete后。ci
这时改为下面这样,就ok了:get
delete t1 t2,t3 from asset t1 join (asset_itsm t2,asset_distinguish_info t3) on (t1.id=t2.asset_id And t1.id=t3.assetId) where t1 .identify in(select * from (select SEARCH_CODE from asset_itsm) t);it
即中间作了一次中转。table