MySQL解決報錯[Err] 1093 - You can't specify target...
阿新 • • 發佈:2018-11-22
做資料變更的時候經常遇到這樣的報錯
DELETE FROM ssq_contract_record WHERE LOAN_ID IN ( SELECT ssq_contract_record.LOAN_ID FROM ssq_contract_record LEFT JOIN loan_info ON ssq_contract_record.LOAN_ID = loan_info.ID WHERE ssq_contract_record.CREATE_TIME > '2018-10-30 00:00:00' AND ssq_contract_record.CREATE_TIME < '2018-11-14 00:00:00' AND loan_info.LENDING_TAG = 'SINAP2P' );
[Err] 1093 - You can't specify target table 'XXX' for update in FROM clause
報錯的意思是 你不能在update這張表的同時在from的子查詢中出現這張表
解決辦法很簡單,外面再加一層查詢“騙過” MySQL,
改寫如下
DELETE FROM ssq_contract_record WHERE LOAN_ID IN ( SELECT t.loan_Id FROM ( SELECT ssq_contract_record.LOAN_ID FROM ssq_contract_record LEFT JOIN loan_info ON ssq_contract_record.LOAN_ID = loan_info.ID WHERE ssq_contract_record.CREATE_TIME > '2018-10-30 00:00:00' AND ssq_contract_record.CREATE_TIME < '2018-11-14 00:00:00' AND loan_info.LENDING_TAG = 'SINAP2P' ) t );