目标表和原表一致 MYSQL不支持如此操作
数据库不能边查询边删除
DELETE from t_centre_order_push_log_2020 where LOG_ID in(
select LOG_ID from t_centre_order_push_log_2020 where PUSH_STATE='10'
)
在该 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 t_centre_order_push_log_2020 where LOG_ID in(
SELECT aa.LOG_ID from
(select * from t_centre_order_push_log_2020 where PUSH_STATE='10') aa
)
*注:未对数据库做特殊处理可采用临时表方式删除数据;
本人所在禁止测试,生产数据库采用子查询删除数据;
原文链接:https://blog.csdn.net/qq_26249609/article/details/83615316