问题解决:MySQL中执行sql语句错误 Error Code: 1093

mysql学习系列 同时被 2 个专栏收录
8 篇文章 0 订阅
65 篇文章 0 订阅

问题场景

mysql执行以下SQL

update test set i_status=5 where s_id in (
	select max(s_id) as id from test where s_title is not null
	group by s_title,length(s_content) having count(*)>1
)

执行报错,提示 : Error Code: 1093. You can't specify target table 'car' for update in FROM clause。本篇博文主要是针对此种情况提出解决方案。

问题环境

软件版本
mysql5.7.27

问题原因

如果是子查询操作的表和更新操作是同一张表就会出现这个问题。但是,如果只是查询操作,就不会报错,会正常执行。如下列SQL是不会报错,可以正常执行。

select * from  test where s_id in (
	select max(s_id) as id from test where s_title is not null
	group by s_title,length(s_content) having count(*)>1
)

解决方案

将子查询作为一个子表,进行隔离开就可以解决这个问题。更新之后的SQL如下:

update test  set i_status=5 where s_id in (
	select id from (
		select max(s_id) as id from test where s_title is not null
		group by s_title,length(s_content) having count(*)>1
	) as temp
)

总结

问题顺利解决!!!

随缘求赞

如果我的文章对大家产生了帮忙,可以在文章底部点个赞或者收藏;
如果有好的讨论,可以留言;
如果想继续查看我以后的文章,可以点击关注
可以扫描以下二维码,关注我的公众号:枫夜之求索阁,查看我最新的分享!
在这里插入图片描述
拜拜

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:终极编程指南 设计师:CSDN官方博客 返回首页

打赏作者

枫夜求索阁

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值