mysql学习系列|问题解决(MySQL中执行sql语句错误 Error Code: 1093)


文章目录

  • 问题场景
  • 问题环境
  • 问题原因
  • 解决方案
  • 总结
  • 随缘求赞

问题场景 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 )

【mysql学习系列|问题解决(MySQL中执行sql语句错误 Error Code: 1093)】执行报错,提示 : Error Code: 1093. You can't specify target table 'car' for update in FROM clause。本篇博文主要是针对此种情况提出解决方案。
问题环境
软件 版本
mysql 5.7.27
问题原因 如果是子查询操作的表和更新操作是同一张表就会出现这个问题。但是,如果只是查询操作,就不会报错,会正常执行。如下列SQL是不会报错,可以正常执行。
select * fromtest 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 testset 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 )

总结 问题顺利解决!!!
随缘求赞 如果我的文章对大家产生了帮忙,可以在文章底部点个赞或者收藏;
如果有好的讨论,可以留言;
如果想继续查看我以后的文章,可以点击关注
可以扫描以下二维码,关注我的公众号:枫夜之求索阁,查看我最新的分享!
mysql学习系列|问题解决(MySQL中执行sql语句错误 Error Code: 1093)
文章图片

mysql学习系列|问题解决(MySQL中执行sql语句错误 Error Code: 1093)
文章图片

    推荐阅读