you can't specify target table for update in from

原创
2016/05/23 13:37
阅读数 66

今天多表关联时,想从一表中查出其中的一个所有字段,然后根据该字段删除相关的三张表,语句如下:

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);

结果提示: You can't specify target table 't2' for update in FROM clause。

出现这一错误提示的原因是:在一个sql语句中,在同一张表中进行了两种操作,如上句即对asset_itsm这张表同时进行了select和delete操作,虽然逻辑上是select先,delete后。

这时改成下面这样,就ok了:

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);

即中间做了一次中转。

展开阅读全文
打赏
2
2 收藏
分享
加载中
更多评论
打赏
0 评论
2 收藏
2
分享
返回顶部
顶部