mysql在把子查詢結果作為刪除表中資料的條件,mysql不允許在子查詢的同時刪除原表資料
阿新 • • 發佈:2018-12-18
**
目標表和原表一致 MYSQL不支援如此操作
資料庫不能邊查詢邊刪除
**
delete from push_msg_overview where id in (
select id from push_msg_overview where push_date+offset_day >= 20181031
)
在該 sql 語句中由於子查詢中包含 push_msg_overview 表,但我們同時要刪除 push_msg_overview 表中的記錄,所以允許該語句時報如下錯誤:
1093-You can't specify target table 'push_msg_overview ' for update in FROM clause.
我們的一般思路就是,1、把子查詢的結果建立臨時表儲存。2、把這個臨時表作為原表刪除的條件。3、刪除表資料。
例項:
delete from push_msg_overview where id in (
select e. id from (
select id from push_msg_overview where push_date+offset_day >= 20181031
) e
)