MySQL報錯1093 - You can't specify target table 't' for update in FROM clause, Time: 0

報錯內容:

1093 - You can't specify target table 't' for update in FROM clause, Time: 0

前情提示:

Mac OS10.14+MySQL8.0.18;

centOS6.8final+MySQL5.6;

解決:

方法一:多嵌套一層。多來一層子查詢

以上SQL修改如下:

UPDATE trace_videorecord SET VideoAddress = 'h8' WHERE VideoID IN
(
SELECT * FROM (
SELECT mg.VideoID FROM sale_goods m LEFT JOIN  prod_task md ON m.TaskID = md.TaskID  LEFT JOIN prod_area ma on md.AreaID = ma.AreaID LEFT JOIN acct_factory mb ON ma.FactoryID = mb.FactoryID  LEFT JOIN trace_videorecord mg ON ma.AreaID = mg.AreaID WHERE m.GoodsID = '128' and mg.Status=1 ORDER BY mg.AddTime DESC LIMIT 0,30
)a
)

方法二:中間表,臨時表。

1.創建一張臨時表,將要刪除的條件自動存入臨時表中:
2.再根據臨時表,刪除主表數據:
3.最後刪除掉臨時表:
create table tmp as select min(id) as a from user group by additive;
delete from user where id not in (select a from tmp);
drop table tmp;

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章