首页 > 数据库 >mysql update语法 竟然不支持limit区间限制

mysql update语法 竟然不支持limit区间限制

时间:2023-05-16 22:25:31浏览次数:40  
标签:name update limit mysql tb id SELECT

首先查询可以这样写,没毛病的

SELECT * from a LIMIT 1000,2000

 

1.然后看一个不是区间的limit,更新满足条件的前1000条,没问题

update a set a.imp_date = 4 where a.is_sync = 0 limit 1000

2.这样写是错误的

update a set a.imp_date = 4 where a.is_sync = 0 limit 1001,2000

原因应该是update的时候的行锁问题,跟update语句后面不能跟 SELECT同一张表的数据 是一个原因

也就是这样是不行的

UPDATE tb_name SET column_name='test' WHERE id in (SELECT id FROM tb_name ORDER BY id ASC LIMIT 20,10);

但是可以这样,这种两层子查询的话会生成临时表(在内存里多存了一份数据),所以对于mysql来说更新的不是同一张表

UPDATE tb_name SET column_name='test' WHERE id in (SELECT id FROM (SELECT * FROM tb_name ORDER BY id ASC LIMIT 20,10) AS tt);

 

上面1.的话加锁就是加前1000行

2.加锁估计很难实现,所以不支持

 

https://blog.csdn.net/qq_15071263/article/details/79001487

标签:name,update,limit,mysql,tb,id,SELECT
From: https://www.cnblogs.com/onlyzhangmeng/p/17407037.html

相关文章

  • .Net 5 CanalSharp Mysql CDC (增量同步,捕获变更数据)Docker 系列之 Canal (CDC 增量
    CanalSharp阿里云的解决方案,需要两部分Canal 服务端要和Mysql连在一起(目前我是用docker部署的服务)另外一部分就是CanalSharp单独的客户端服务(.Net5服务)CanalSharp文档可以参考:https://canalsharp.azurewebsites.net/zh/安装服务,可以点击下边的连接。Docker系列之Canal......
  • .NET 6 Mysql Canal (CDC 增量同步,捕获变更数据) 案例版
    之前业务需要捕捉到业务数据增量部分,并对其进行宽表处理,这也是其中的一个技术方案,方案主要是用了CDC的技术。CDC全称是ChangeDataCapture,捕获变更数据,是一个比较广泛的概念,只要是能够捕获所有数据的变化,比如数据库捕获完整的变更日志记录增、删、改等,都可以称为CDC。该功能被......
  • MySQL数据基础知识整理—1
     MySQL数据库在学习之前,我们要了解什么是MySQL数据库?MySQL数据库是一个开源的关系型数据库管理系统,我们可以使用SQL(StructuredQueryLanguage)作为开发语言,对数据进行操作,并且,该数据库支持多用户,多线程,多种存储引擎,因此被广泛的应用于Web开发中。    简单来说,MySQL数据库就......
  • 【Azure 应用服务】应用服务连接 Azure MySQL 一直失败,报错 Create connection error
    问题描述AppService上部署的Java应用,连接 AzureDatabaseforMySQL失败。错误信息:Createconnectionerror,url:jdbc:mysql://.......................communicationslinkfailure. 问题解答应用的错误信息提示为:与MySQL数据库建立连接失败。所以需要考虑如下几种......
  • MySQL日期时间加|减法
    日期加法selectdate_add(curdate(),intervalNSECOND);--加N秒selectdate_add(curdate(),intervalNMINUTE);--加N分钟selectdate_add(curdate(),intervalNHOUR);--加N小时selectdate_add(curdate(),intervalNday);--加N天selectdate_add(curdate(......
  • mysql int之显示长度
    mysqlint之显示长度作为SQL标准的扩展,MySQL也支持整数类型TINYINT、MEDIUMINT和BIGINT。下面的表显示了需要的每个整数类型的存储和范围。MySQL还支持选择在该类型关键字后面的括号内指定整数值的显示宽度(例如,INT(4))。该可选显示宽度规定用于显示宽度小于指定的列宽度的值......
  • MySQL-8.0.20安装步骤
    1.创建软件目录,方便管理[root@wp-centos/root]#mkdir/software&&cd/software2.下载安装包[root@wp-centos/software]#wgethttps://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.20-el7-x86_64.tar.gz3.解压安装包[root@wp-centos/software]#tarxfm......
  • 问题记录之mysql:Job for mysqld.service failed because the control process exited
    今天服务器连接mysql发现一直超时(查出的原因是磁盘满了)清了磁盘以后,mysqld.service 还是无法启动执行命令及报错如下:(注意,因为磁盘满的问题,我的mysql并不是正常途径关闭的)控制进程以错误代码退出导致无法以正常的方式启动它了,错误说明:Jobformysqld.servicefailedbecauset......
  • Powershell 无法将“mysql”项识别为 cmdlet、函数、脚本文件或可运行程序的名称
    Win键+Q,在搜索框内输入Powershell。点击以管理员身份运行Powershell。粘贴代码 set-executionpolicyremotesigned 按回车键执行命令。输入A,按回车键确认。 ......
  • MySQL日志及分类
    日志是数据库的重要组成部分,主要用来记录数据库的运行情况、日常操作和错误信息。在MySQL中,日志可以分为二进制日志、错误日志、通用查询日志和慢查询日志。对于MySQL的管理工作而言,这些日志文件是不可缺少的。分析这些日志,可以帮助我们了解MySQL数据库的运行情况、日常操......