我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL出现You can‘t specify target table for update in FROM clause错误的解决方法

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySQL出现You can‘t specify target table for update in FROM clause错误的解决方法

MySQL出现You can‘t specify target table for update in FROM clause错误的解决方法

在MySQL中,可能会遇到You can't specify target table '表名' for update in FROM clause这样的错误

它的意思是说,不能在同一语句中,先select出同一表中的某些值,再update这个表,即不能依据某字段值做判断再来更新某字段的值。

这个问题在MySQL官网中有提到解决方案:MySQL-UPDATE- 拉到文档下面

例如下面这张t_message

+----+-----+-----------+---------------------+| id | uid | content   | addtime             |+----+-----+-----------+---------------------+|  1 |   1 | content1  | 2022-04-26 00:00:01 ||  2 |   2 | content2  | 2022-04-26 00:00:02 ||  3 |   3 | content3  | 2022-04-26 00:00:03 ||  4 |   1 | content4  | 2022-04-26 00:00:04 ||  5 |   3 | content5  | 2022-04-26 00:00:05 ||  6 |   2 | content6  | 2022-04-26 00:00:06 ||  7 |   2 | content7  | 2022-04-26 00:00:07 ||  8 |   4 | content8  | 2022-04-26 00:00:08 ||  9 |   4 | content9  | 2022-04-26 00:00:09 || 10 |   1 | content10 | 2022-04-26 00:00:10 |+----+-----+-----------+---------------------+

我想将每个用户第一条消息的内容更新为Hello World

UPDATE t_message SET content = 'Hello World' WHERE id IN (  SELECT min(id) FROM t_message GROUP BY uid );

会出现下面错误:

ERROR 1093: You can't specify target table 't_message' for update in FROM clause

因为在同一个sql语句中,先selectt_message表中每个用户消息的最小id值,然后再更新t_message表,因此会出现 ERROR 1093 : You can’t specify target table ‘message’ for update in FROM clause 这个错误。

解决方法:select 的结果再通过一个中间表 select 多一次,就可以避免这个错误

UPDATE message SET content = 'Hello World' WHERE id IN ( SELECT min_id FROM (   SELECT min(id) AS min_id FROM t_message GROUP BY uid ) AS a );

来源地址:https://blog.csdn.net/qq_32727095/article/details/124492897

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySQL出现You can‘t specify target table for update in FROM clause错误的解决方法

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL出现You can‘t specify target table for update in FROM clause错误的解决方法

MySQL出现You can‘t specify target table for update in FROM clause错误的解决方法 分析原因解决方法 分析原因 在MySQL中,可能会遇到You can't specif
2023-08-19

解决MySQL报错:You can‘t specify target table ‘region‘ for update in FROM clause

目录前言示例一示例二示例三示例四需要注意的地方总结前言首先明确一点这个错误只会发生在delete语句或者update语句,拿update来举例 : update A表 set A列 = (select B列 from A表); 这种写法就
2023-02-01

解决MySQL报错:You can‘t specify target table ‘region‘ for update in FROM clause

这篇文章主要给大家介绍了关于MySQL报错:You can‘t specify target table ‘region‘ for update in FROM clause的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
2023-02-01

MySQL报错:You can‘t specify target table ‘region‘ for update in FROM clause如何解决

这篇文章主要讲解了“MySQL报错:You can‘t specify target table ‘region‘ for update in FROM clause如何解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思
2023-07-05

You can't specify target table 'table_name' for update in FROM clause - 如何解决MySQL报错:无法在FROM子句中更

在进行MySQL数据库开发过程中,我们有时会遇到以下报错信息:You can't specify target table 'table_name' for update in FROM clause(无法在FROM子句中更新目标表)。这个
2023-10-21

You can't specify target table 'table_name' for update in FROM clause - 如何解决MySQL报错:无法在FROM子句中更

你好,下面是一篇1500字以内的文章,标题为:You can't specify target table 'table_name' for update in FROM clause - 如何解决MySQL报错:无法在FROM子句中更新目
2023-10-22

编程热搜

目录