update expresspackage set IsUploadSto=-200 where BillCode in ( SELECT BillCode from expresspackage where RealLatticeNo not in (224,448) and `Status` = 0 and DownTime < '2022/1/26 15:29:03' and createTime < '2022/1/26 15:29:03' and IsUploadSto > -20 and IsUploadSto < 1 )
執行上訴語句出現You can't specify target table for update in FROM clause 不能在同一表中查詢的數據作為同一表的更新數據。
改成下述語句就行
update expresspackage set IsUploadSto=-200 where BillCode in ( SELECT a.BillCode from ( SELECT BillCode from expresspackage where RealLatticeNo not in (224,448) and `Status` = 0 and DownTime < '2022/1/26 15:29:03' and createTime < '2022/1/26 15:29:03' and IsUploadSto > -20 and IsUploadSto < 1 ) a )
也就是說將select出的結果再通過中間表select一遍,這樣就規避了錯誤。注意,這個問題只出現於mysql,mssql和Oracle不會出現此問題。