mysql在把子查询结果作为删除表中数据的条件,mysql不允许在子查询的同时删除原表数据

目标表和原表一致 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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值