MySQL删除子查询数据报错1093怎么办 内连接JOIN解决技巧
更新时间:2026年11月04日 09:09:01 作者:dingcho
还在为MySQL删除子查询数据报错1093发愁吗?本文教你用内连接JOIN和表别名轻松解决,避免“不能指定目标表更新”的错误,精准删除符合条件的记录,让你的SQL语句更高效
MySQL删除子查询数据报错1093怎么办
delete from pms_pay_refund_order where pay_order_no in (select pay_order_no from pms_pay_refund_order GROUP BY pay_order_no HAVING count(pay_order_no) >1) and channel_err_msg = '申请退款金额大于可退款余额'
在 MySQL 里,若要删除子查询所涉及表中的数据,直接使用原 SQL 会报错
1093 - You can't specify target table 'pms_pay_refund_order' for update in FROM clause
下面是修正后的 SQL 语句:
DELETE p1
FROM pms_pay_refund_order p1
JOIN (
SELECT pay_order_no
FROM pms_pay_refund_order
GROUP BY pay_order_no
HAVING COUNT(pay_order_no) > 1
) p2 ON p1.pay_order_no = p2.pay_order_no
WHERE p1.channel_err_msg = '申请退款金额大于可退款余额';主要修改点
- 运用内连接(JOIN)把主表和子查询结果关联起来,防止出现 “你不能在 FROM 子句中为更新指定目标表” 的错误。
- 采用表别名(p1、p2)清晰区分主表和子查询。
- 把过滤条件
channel_err_msg = ...放在 WHERE 子句里,精准筛选要删除的记录
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
MySql,MVCC实现及其机制,快照读在RC,RR下的区别说明
这篇文章主要介绍了MySql,MVCC实现及其机制,快照读在RC,RR下的区别说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2024-04-04
MySQL 8.0.20 Window10免安装版配置及Navicat管理教程图文详解
这篇文章主要介绍了MySQL 8.0.20 Window10免安装版配置及Navicat管理,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-06-06
Mysql注入中的outfile、dumpfile、load_file函数详解
这篇文章主要介绍了Mysql注入中的outfile、dumpfile、load_file,需要的朋友可以参考下2018-05-05


最新评论