MySQL删除操作时遇到1093 - You can‘t specify target table ‘xxx‘ for update in FROM clause

 报错时候的语句:

DELETE FROM YOUR_TABLE
where id in (
	select MAX(id) from YOUR_TABLE where  CONCAT(sddm,rq) in (
			select CONCAT(sddm,rq) from YOUR_TABLE  group by sddm,rq having count(1)>1
	) 
	group by sddm
)

结果就遇到了   1093 - You can't specify target table 'YOUR_TABLE' for update in FROM clause

意思就是在 MySQL 中,您不能在 DELETE 语句的 FROM 子句中引用目标表,这是因为在 DELETE 语句中,目标表不能出现在 FROM 或 JOIN 子句中。您所尝试的查询违反了这个规则,因此收到了错误信息 You can't specify target table 'YOUR_TABLE' for update in FROM clause。

要解决这个问题,您可以再包装一层SELECT查询来确定要删除的记录,然后再执行 DELETE 语句。下面是一个修改后的示例,它将按照您的需求删除重复的记录。

下面是修复后的语句:

DELETE FROM YOUR_TABLE
where id in (
	select id from (
				select MAX(id) id from YOUR_TABLE where CONCAT(sddm,rq) in (
					select CONCAT(sddm,rq3) from YOUR_TABLE group by sddm,rq having count(1)>1
			) 
			group by sddm
	) a 

)

结果当然是删除成功了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值