当前位置: 首页 > news >正文

mysql报错:You can‘t specify target table ‘Person‘ for update in FROM clause

背景

在做leetcode里数据库的196题删除重复数据时,我参考评论区大佬的方法先用group by找到每个分组里的最小的id的那条记录,然后删掉原表中id不在其中的记录,然后就报了如题所示的错误。
我的写法如下:

DELETE FROMPerson
WHEREid
NOT IN(SELECT MIN(id) tidFROM PersonGROUP BYemail);

原因

mysql在更新表里的记录的时候,它from的表不能跟它要更新的表是同一个表,据大模型解释,这是为了防止不可预期的结果和性能问题,它说这样的查询和更新同一个表,mysql无法确定操作的顺序,不知道是先查询还是先更新或者说查询了已经更新的数据。
但我想在上面的这行sql语句里,不是明显先执行查询,然后再执行删除吗?难道说mysql有些优化让这两步可以同时进行?

总结

目前,暂时只是知道了有这么回事,我想可能还需要去了解下mysql的执行顺序究竟是啥样的。

http://www.lryc.cn/news/376998.html

相关文章:

  • Python sorted()方法
  • 云上宝库:三大厂商对象存储安全性及差异性比较
  • 【计算机网络体系结构】计算机网络体系结构实验-www实验
  • Windows下MySQL数据库定期备份SQL文件与删除历史备份文件.bat脚本
  • electron基础使用
  • 9.华为交换机telnet远程管理配置aaa认证
  • xcode报错合集,你都遇到过哪些跳不过的坑
  • 六面体大米装袋机长期稳定运行原因分析
  • android的surface
  • Z世代职场价值观的重塑:从“班味”心态到个人成长的追求
  • 【Python】Python 2 测试网络连通性脚本
  • 瓦罗兰特教你怎么玩低价区+超适配低价区的免费加速器
  • Linux安装kvm虚拟机
  • @pytest.fixture与@pytest.mark.parametrize结合实现参数化
  • uniapp中unicloud接入支付宝订阅消息完整教程
  • PHP 标准建议psr
  • 第九届信也科技杯全球AI算法大赛——语音深度鉴伪识别参赛A榜 0.968961分
  • 【设计模式(三) 设计模式的分类 】
  • Linux进程概念(个人笔记)
  • 每天五分钟计算机视觉:如何在现有经典的卷积神经网络上进行微调
  • 10个典型的MySQL笔试题和面试题
  • AI大模型的TTS评测
  • 推荐一款可以下载B站视频和音频的工具
  • 中科数安 |-透明加密软件_无感透明加密 - 源头有保障
  • ui自动化selenium,清新脱俗代码,框架升级讲解
  • 【吊打面试官系列-Mysql面试题】Myql 中的事务回滚机制概述 ?
  • VMware虚拟机三种网络模式设置 - Bridged(桥接模式)
  • 关于Panabit在资产平台中类型划分问题
  • 【C语言】12.C语言内存函数
  • Django:如何将多个数据表内容合在一起返回响应