Mysql在del和update時含子查詢會報此錯
-->因爲在MYSQL裏,不能先select一個表的記錄,再按此條件進行更新和刪除同一個表的記錄
解決辦法是,將select得到的結果,再通過中間表select一遍,這樣就規避了錯誤,
這個問題只出現於mysql,mssql和oracle不會出現此問題
詳情看sql:
原報錯sql:
UPDATE table_A SET status=1
WHERE A_id IN(
SELECT order_id FROM table_A_B WHERE B_id=23
)
修改後的sql:
UPDATE table_A SET status=1
WHERE A_id IN(
SELECT a.id FROM (
SELECT id FROM table_A_B WHERE B_id=23
) a)
相當於對內子循環起了一個別名