首页 > 数据库 >mysql嵌套查询更新

mysql嵌套查询更新

时间:2023-02-08 15:11:58浏览次数:41  
标签:group 查询 stub 嵌套 mysql WHERE ID

先上个mysql报错

sql语句

UPDATE t_stub_group SET FRANCHISE = 1 WHERE ID IN (SELECT ID FROM t_stub_group WHERE MODIFY_TIME < '2023-02-08 04:05:12')

报错信息

1093 - You can't specify target table 't_stub_group' for update in FROM clause

错误原因:

在更新和嵌套的子查询中操作的同一张表

解决方法

将子查询结果再封装一次,AS生成新的临时表再查询操作一次
UPDATE t_stub_group SET FRANCHISE = 1 WHERE ID IN ( SELECT tmp.ID from ( SELECT ID FROM t_stub_group WHERE MODIFY_TIME < '2023-02-08 04:05:12' )AS tmp );

总结

在数据库中使用update set in(子句)时,子句查询结果不宜超过200条;
虽然在实际操作中子句查了3w多条数据花费1s多全部更新成功,但是这玩意性能很低,出错了不好排查
生产环境还是使用单条主键查询更新

标签:group,查询,stub,嵌套,mysql,WHERE,ID
From: https://www.cnblogs.com/xiaowan2333/p/17101814.html

相关文章

  • mycat+MySQL主从读写分离
    Mycat应用场景Mycat发展到现在,适用的场景已经很丰富,而且不断有新用户给出新的创新性的方案,以下是几个典型的应用场景:单纯的读写分离,此时配置最为简单,支持读写分离,主从切......
  • 基于mysql纯java的智能题库(后期填写注释)
    1packagecontroller;23importadmin.entity.Admin;4importadmin.service.AdminService;5importadmin.service.impl.AdminServiceImpl;6import......
  • 云时代,最好用的MySQL客户端工具推荐
    数据库图形客户端(GUI)工具,可以大大帮助开发者提升SQL编写与开发的效率。在云时代,企业越来越多的开始采用RDS,同时也还有部分本地IDC自建数据库,而在云端也会选择/尝试多个不同......
  • 【MySQL高级】索引优化
    目录​​1.使用索引优化​​​​1.1数据准备​​​​1.2避免索引失效应用-全值匹配​​​​1.3避免索引失效应用-最左前缀法则​​​​1.4避免索引失效应用-其他匹配原则​......
  • navicat for mysql
    1、先下载并安装navicat_premium_trial_64(注意是64bit版本) 链接:https://pan.baidu.com/s/11nRYrmddDLj1R0rrIfbKcg提取码:5cmv2、下载PatchNavicat并将其复制到Na......
  • MySQL 如何实现数据更新
    一般在更新时会遇到以下场景:1.所有字段全部更新;2.根据条件更新字段中的某部分内容;3.根据不同的条件更新不同的值,以下是几种场景中常用的update方法。一、方法分类二、具......
  • 解决com.mysql.cj.jdbc.exceptions.PacketTooBigException: Packet for query is too
    1.今天遇到一个蛮奇怪的问题,项目一天都没啥问题,然后等我下班测试就跟我说报错报错如下:    2.然后我立马去控制台打印实时日志查看报如下错;    3.经......
  • pycharm爬虫报错:pymysql.err.DataError: (1406, "Data too long for column 'content'
     在学习爬虫的时候,获取数据存入mysql时出现了问题:pymysql.err.DataError:(1406,"Datatoolongforcolumn'content'atrow1")因为mysql也是本地搭建的,所以一时间......
  • MySql多表查询
    多表关系一对多实现:在多的一方建立外键,用来指向一的一方的主键多对多实现:建立第三张中间表,中间表至少包含两个外键,分别关联两方主键一对一实现:在任意一方加入......
  • 多层嵌套的数组扁平化处理
    数组将多层嵌套的数组做扁平化处理例如:类似于将letarr=[1,2,3,[4,[5,6,[7],8]],9]处理成[1,2,3,4,5,6,7,8,9]方法一:递归functionflattenArr(arr){leta......