想象一下以下sql查询:

UPDATE MYTABLE

SET COL2 = (SELECT COL2 + 1 FROM (SELECT MAX(COL2) FROM MYTABLE) AS X)

WHERE ID IN (1,2,3,4,5)

假设在执行更新之前MAX(COL2)为1.

我的意图是,对于ID = 1的更新,COL2更新为’max(COL2)1′(即2),并且重新评估后续更新’MAX(COL2)1′,以便ID = 2 ,COL2 = 3,ID = 3,COL2 = 4等……

实际发生的是,对于所有行(ID = 1,2,3,4,5),COL2的值为2.

是否有一种聪明的方法可以在每次更新时重新评估MAX(COL2)1的值?我意识到这样做可能存在性能问题,但我很好奇!有没有更好的替代方案(不涉及多个更新语句)?

解决方法:

UPDATE mytable, (

SELECT @loop := MAX(col1)

FROM

mytable

) o

SET col1 = (@loop := @loop + 1)

你在这里遇到的是查询稳定性.

没有查询可以看到自己做出的更改,或以下查询:

UPDATE mytable

SET col1 = col2 + 1

WHERE col1 > col2

永远不会结束

标签:mysql,sql,sql-update

来源: https://codeday.me/bug/20190716/1473565.html

mysql动态update语句,mysql – SQL:具有动态列值赋值的update语句相关推荐

  1. sql两个列值以下划线拼接得到一个新的列_面试必备sql知识点——MySQL基础

    在刷了上百道sql题后,发现所有的题目都是基于某一个或几个知识点来做考察的,所以理清基础的知识细节,才能在题目考察到任意知识点时,找到解决线索. 温故而知新,学习在于总结,于是我再次对已经学习过的my ...

  2. mysql某一列 赋值_[MySQL]定时把某一列值赋值给另一列

    前言 在做项目的时候需要根据用户的积分做一个排名和排名趋势(上升.下降或持平),首先,从排名趋势上分析,我的想法是,今天的排名(ranking)和昨天排名(oldranking)进行对比,然后给出趋势 ...

  3. Mysql查询结果只有一条的情况下把值赋值给变量,再用if else 流程判断

    1 BEGIN 2 set @n=(SELECT count(day) from log where day=CURDATE()); 3 IF @n=0 THEN 4 call m_LogInsert ...

  4. 'SELECT'语句中的'IF' - 根据列值选择输出值

    SELECT id, amount FROM report 我需要amount为amount如果report.type='P'和-amount如果report.type='N' . 如何将其添加到上述 ...

  5. MySQL 当记录不存在时insert,当记录存在时update(ON DUPLICATE KEY UPDATE, REPLACE语句)...

    MySQL 当记录不存在时insert,当记录存在时更新 网上基本有三种解决方法. 第一种:示例一:insert多条记录 假设有一个主键为 client_id 的 clients 表,可以使用下面的语 ...

  6. mysql delayed_mysql insert的几点操作(DELAYED,IGNORE,ON DUPLICATE KEY UPDATE )

    mysql insert的几点操作(DELAYED,IGNORE,ON DUPLICATE KEY UPDATE ) 更新时间:2010年04月14日 13:46:04   作者: DELAYED 做 ...

  7. MySQL 当记录不存在时insert,当记录存在时update

    MySQL 当记录不存在时insert,当记录存在时更新 网上基本有三种解决方法. 第一种: 示例一:insert多条记录 假设有一个主键为 client_id 的 clients 表,可以使用下面的 ...

  8. mysql查询前5000条记录分页显示_数据库 完整的查询语句,查询顺序及分页显示功能...

    基本的查询语句​ select (* | 字段名 | 四则运算 | 聚合函数) from 表名称; 取别名 当字段名显示较长时 可以添加别名​ select 字段名 as 别名 from 表名称;​ ...

  9. (大数据工程师学习路径)第五步 MySQL参考手册中文版----MySQL函数和操作符

    一.操作符 1.1 操作符优先级 以下列表显示了操作符优先级的由低到高的顺序.排列在同一行的操作符具有相同的优先级. 操作符 优先级 := 1 ||, OR, XOR 2 &&, AN ...

最新文章

  1. 数据结构的映像方法(数据元素的机内表示)
  2. python3 opencv 输出中文
  3. 小白学python买什么书-小白如何高效率学习python?真心建议(附教程)
  4. 2008秋-计算机软件基础- 实验一 参考源程序
  5. boxfilter 函数
  6. 学生电脑哪个牌子好_专卖工作服哪个牌子好
  7. Java语法糖1:可变长度参数以及foreach循环原理
  8. hduoj 2546饭卡
  9. 反射创建对象_如何应用Java反射技术灵活地创建程序类的对象实例
  10. SpringCloud学习笔记(6)----Spring Cloud Netflix之负载均衡-Ribbon的使用
  11. 前端笔记 | CSS盒子模型
  12. java程卫琴_43名基层工会干部在“机关开放日”走进安徽省总工会参观并座谈
  13. html设置分割线虚线,css border设置虚线样式?
  14. excel替换快捷键_18个Ctrl系列快捷键,简单易上手,且实用
  15. 高等数学 极限存在 与 极限不存在
  16. Unity3D游戏开发从零单排(六) - 人物运动及攻击连击
  17. UG二次开发-加工篇:获取刀具的直径,总长,刃长等
  18. Linux各版本内核下载地址
  19. Swift:什么时候需要mutating这个参数
  20. 目标检测之详解yolov3的anchor、置信度和类别概率

热门文章

  1. php博客怎么上线,老张博客上线啦(二)
  2. 什么是Extreme Programming
  3. 整型转字符串itoa
  4. nagios网页监控check_http
  5. WPF DevExpress 主题包无法在别的电脑使用问题
  6. 占豪的投资博客--揭穿美借助“货币战争”操纵世界的巨大阴谋(一)
  7. Hot_s 三子一线棋
  8. mysql 创建sequence
  9. 计算机网络技术系训口号,互联网研发团队口号
  10. Web服务器配置(Tomcat)【Centos】