MySQL:仅在满足条件时更新字段

2024-03-01

是否可以在 MySQL 上执行 UPDATE 查询,仅在满足特定条件时才更新字段值?像这样的事情:

UPDATE test
SET
    CASE
        WHEN true
        THEN field = 1
    END
WHERE id = 123

换句话说,“字段”仅在满足条件时才会更新,否则不执行任何操作。

UPDATE:我的示例查询没有完全指定我的问题,因为可能有更多字段需要无条件更新,换句话说:

UPDATE test
SET
    something = 1,        /*field that always gets updated*/
    CASE
        WHEN true
        THEN field = 1    /*field that should only get updated when condition is met*/
    END
WHERE id = 123

抱歉缺少信息。


Yes!

这里还有另一个例子:

UPDATE prices
SET final_price= CASE
   WHEN currency=1 THEN 0.81*final_price
   ELSE final_price
END

这是可行的,因为 MySQL 不会更新行,如果没有更改,正如文档中提到的 https://dev.mysql.com/doc/refman/5.7/en/update.html:

如果将列设置为当前的值,MySQL 会注意到这一点 并且不更新它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL:仅在满足条件时更新字段 的相关文章

  • Ruby ActiveRecord 和 sql 元组支持

    ActiveRecord 是否支持 where 子句中的元组 假设底层数据库支持 结果 where 子句看起来像这样 where name address in John 123 Main St I tried Person where n
  • 无法与重定向器建立连接。确保“sql browser”服务正在运行

    所以我尝试这个 sql server 2012 由于这个错误我无法打开任何 ssis 包 无法与重定向器建立连接 确保 sql browser 服务正在运行 我的 Sql 浏览器肯定正在运行 我尝试在本地服务 本地系统和网络下更改它 仍然没
  • 将自动增量列添加到按日期排序的现有表中

    我在数据库中有一个名为 tickets 的现有表 其中包含以下列 id string Primary Key contains UUID like e6c49164 545a 43a1 845f 73c5163962f2 date bigi
  • SQL Server 中的 FIFO 查询

    我正在构建一个库存管理应用程序c with SQL server 我想做一个FIFO从我的表查询 我以可变价格购买了相同的产品 之后我卖掉了其中一些 我想根据 先进先出 进行查询BatchDate柱子 所以我想通过PurchasePrice
  • SQL Server 中离线索引重建和在线索引重建有什么区别?

    重建索引时 有一个选项ONLINE OFF and ONLINE ON 我知道当ONLINE模式打开时 它会复制索引 切换新查询以利用它 然后重建原始索引 使用版本控制跟踪两者的更改 如果我错了 请纠正我 但是 SQL 在离线模式下会做什么
  • R中IF函数的使用

    我正在短跑ifR 中的函数 但收到以下警告消息 In if runif 50 0 1 lt 0 69 the condition has length gt 1 and only the first element will be used
  • Django 将 JSON 数据传递给静态 getJSON/Javascript

    我正在尝试从 models py 中获取数据并将其序列化为views py 中的 JSON 对象 模型 py class Platform models Model platformtype models CharField max len
  • PHP条件,如果当前页面,则链接突出显示[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我有一个带
  • rake db 问题:迁移 -

    我无法为 Ruby on Rails 设置 MySQL 数据库 设置数据库并确保 config database yml 文件匹配后 我遇到了以下错误消息 U Rails alpha gt rake db migrate trace in
  • 防止 Propel 插入空字符串

    当未设置列时 如何防止 Propel ORM 插入空字符串 CREATE TABLE user uid INTEGER PRIMARY KEY AUTO INCREMENT email VARCHAR 255 NOT NULL UNIQUE
  • 使用什么框架来引导我的第一个生产 scala 项目?

    我正在第一次涉足 scala 的生产应用程序 该应用程序当前打包为 war 文件 我的计划是创建 scala 编译工件的 jar 文件 并将其添加到 war 文件的 lib 文件夹中 我的增强功能是通过 Jersey 公开的 mysql 支
  • 如何对 SQL 进行多次查询

    我正在尝试创建一个表 并在 PHP 脚本的帮助下在数据库中插入一些值 虽然只插入 1 行 但效果很好 当我尝试输入更多行数时 出现错误 我需要为每个查询编写完整的插入语句 因为我正在使用在线 Excel 到 SQL 查询转换器
  • 随着时间的推移累积(不重叠)——技术?

    我正在尝试找到一种更好的方法来制作水晶报告 其他人的 按组添加不重叠的时间 这显然是一个古老的问题 有没有一种技术可以得到 调整每条记录的 开始 结束 时间 以消除共同 重叠时间 亚组内 使用直接 SQL 尽管我发现我可以执行 CTE 假设
  • 重写 URL,将 ID 替换为查询字符串中的标题

    我对 mod rewrite 很陌生 但我做了一些搜索 但找不到这个问题的答案 我有一个网站 它只有一个 PHP 页面 根据查询字符串中传递给它的 ID 提供数十页内容 我想重写 URL 以便此 ID消失并替换为从数据库中提取的页面标题 例
  • 在 MySQL 数据库中保持 TEXT 字段唯一的最佳方法

    我想让 TEXT 字段的值在我的 MySQL 表中唯一 经过小型研究 我发现由于性能问题 每个人都不鼓励在 TEXT 字段上使用 UNIQUE INDEX 我现在想用的是 1 创建另一个字段来包含 TEXT 值的哈希值 md5 text v
  • Oracle SQL PLS-00049:错误的绑定变量

    我收到此错误 这似乎是列拼写问题 然而 我 99 确信我拼写的所有内容都是正确的 但我看不出有任何理由会出现我所犯的错误 这是来源 CREATE OR REPLACE TRIGGER update qoh trigger AFTER INS
  • SQL Server:如果存在会大大减慢查询速度

    正在使用SQL Server 2012 我找到了一些关于查询优化的主题 并将 EXISTS 与 COUNT 进行比较 但我找不到这个确切的问题 我有一个看起来像这样的查询 select from tblAccount as acc join
  • 选择获取与 MySQL Group 中 max 对应的整行

    当我使用Max使用后查找特定 MySQL 组中字段的最大值GROUP BY 是否可以获取包含最大值的整行 我在处理一些论坛代码时偶然发现了这个线程 我想获取每个线程的最新帖子并将其显示在特定板的线程列表中 Quassnoi上面的回答对我非常
  • CONTAINS 不适用于 Oracle Text

    我在执行此查询时遇到问题 SELECT FROM gob attachment WHERE CONTAINS gob a document java gt 0 它给了我 ORA 29902 error in executing ODCIIn
  • Oracle REGEXP_INSTR() 和“a-z”字符范围与预期不匹配

    我想用REGEXP INSTR 在 oracle 数据库中检查小写 大写字符 我知道 upper and lower POSIX 字符类 但我选择了a z这给了我非常奇怪的结果 我不明白 有人可以解释一下吗 SELECT REGEXP IN

随机推荐

  • 如何在闪亮的仪表板侧边栏中的 menuSubItem 下包含输入小部件?

    如何在闪亮应用程序的侧边栏中的 menuSubItem 下包含一个控件小部件 这是我的试验 library shiny library shinyWidgets library shinydashboard ui lt dashboardP
  • 使用 Ninject 将存储库注入自定义会员资格提供程序

    我正在尝试使用 MVC 3 中的 ninject 将存储库注入到自定义成员资格提供程序中 在 MembershipProvider 中我尝试了以下操作 Inject public ICustomerRepository customerRe
  • 如何更新外键

    我有 2 张桌子 第一个表的设计如下 Table 1 id Doc line sheet pk Autonumber DocNo text lineNo text Sheet No text 字段组合 DocNo lineNo Sheet
  • 如何禁用 Internet Explorer 的同源策略

    Chrome允许我们禁用同源策略 因此我们可以测试跨源请求 我想知道是否有可能在 IE 中做同样的事情 是的 您可以在 Internet 选项 中进行设置 转到 安全 选项卡 对于当前区域 单击 自定义级别 按钮 在下一个窗口中 向下滚动大
  • 更改底层依赖项后 SQL Server 视图显示过时/错误的数据

    我们有一个视图 称为 X 它是由另外 2 个视图 称为 Y 和 Z 调用的基本视图 今天我们对视图 X 进行了更改 之后视图 Y 和 Z 开始带回不正确的数据 当我们在 Management Studio 中运行时SELECT FROM Y
  • Javascript - 检索对象属性路径[重复]

    这个问题在这里已经有答案了 我有以下对象 var obj obj foo obj foo bar I want this 给定 路径 foo bar 作为字符串 我如何检索obj foo bar or obj foo bar 这是一个方法
  • 应用程序首次启动时调用 didReceiveRemoteNotification

    我已经实现了 didReceiveRemoteNotification 方法 它工作并显示一个视图控制器以及传递的通知数据 仅当应用程序已在前台或在后台运行时 此功能才有效 但是 当应用程序未运行并且用户单击通知时 应用程序会启动 但看起来
  • 进程监控 CreateProcessNotifyRoutineEx

    我正在开发一个用于监视进程创建的驱动程序 我编写了一个简单的代码来完成它 我用PsSetCreateProcessNotifyRoutineEx 但这行不通 我完全遵循微软的帮助在这个链接上 http msdn microsoft com
  • Boost Beast 在关闭后重新连接 websocket 连接

    我正在使用 boost beast 创建 websocket 连接 到目前为止它似乎工作正常 但我无法弄清楚断开连接后是否应该替换 websocket stream 变量 即我有一个变量 boost beast websocket stre
  • 有没有办法在 C 中使用具有常量索引的常量数组作为 switch case 标签?

    我有一些常量值和数组定义它们的标签和哈希码 例如 define LABEL A 0 or const int LABEL A 0 define LABEL B 1 define LABEL C 2 define LABEL D 3 cons
  • 获取 Google 表单脚本生成的电子邮件以将数据传输到响应表中

    我目前正在尝试设置审批工作流程 对于这些事情 我还相当初级 但到目前为止 在示例的帮助下 它已经达到了可观的水平 可以满足我们的需求 我正在使用来自的模板 示例使用 Google 脚本和表单进行电子邮件批准 https sites goog
  • 无法删除 S3 存储桶 - 错误未找到数据

    我无法摆脱 S3 中的五个桶 AWS 控制台中的每个屏幕都会显示 未找到错误数据 即概述 属性 权限 管理 访问点 我无法设置生命周期删除对象的规则 但存储桶中从未有过任何内容 而且版本控制也从未启用 我也尝试过在我的终端中强制它 aws
  • Qt 4.8 beta 和 Mac OSX Lion,Phonon 错误

    成功安装 mac OS 10 7 后 我尝试编译我的 qt 4 7 项目 我收到了很多 不支持的 mac os x 版本 的警告 因此我决定使用 Qt 4 8 beta 现在所有警告都消失了 但是 我现在使用 Phonon 时遇到链接器问题
  • 为什么window.width小于媒体查询中设置的视口宽度

    我很困惑 仍然不知道如何用合适的语言解释这一点 到目前为止 我已经使用断点并设置了媒体查询 使用的断点变量如下所示 menustatictofixed min width 900px breakpoint to ems 设置为 true 我
  • 错误:“...”未命名类型

    我有一个工作项目 重新安排一些代码后 我尝试重新编译我的项目 然后奇怪的事情开始发生 看一下编译器输出的摘录 我正在使用 MinGW G 从 Windows 上的 Eclipse 进行编译 Build of configuration De
  • 术语“Scaffold-DbContext”未被识别为 cmdlet 的名称

    我有一个包含两个项目的解决方案 一个是主项目 第二个是使用 EF Core 10 0 RC2 的项目 在第二个项目中 我使用这三个命令来安装 EF Core 并运行此 nuget 命令来安装它 Install Package Microso
  • 查找列表列表中项目的部分匹配

    我有这样的列表 l 08 00 09 00 60 False 1 0 09 00 10 00 60 False 0 3 12 00 13 00 60 False 2 0 我想检查是否有列表l有一个元素但我不知道最后一个元素的值float 我
  • 如何在 R 中使用 readHTMLTable 读取注释掉的 HTML 表

    过去 我已经能够使用 R 中的 readHTMLTable 来获取一些足球统计数据 当今年再次尝试这样做时 表格没有显示 即使它们在网页上可见 这是一个例子 http www pro football reference com boxsc
  • 从控制器构造函数中的 URL 获取参数

    我需要编写一些代码来在项目数据库中查找 ID 用户耦合到一个项目 并且所有项目都与其他对象 例如会话 有很多连接 现在 我需要在运行任何操作之前检查尝试访问会话的用户是否连接到与会话连接的同一项目 为此 我想在操作上使用 属性 MVC 创建
  • MySQL:仅在满足条件时更新字段

    是否可以在 MySQL 上执行 UPDATE 查询 仅在满足特定条件时才更新字段值 像这样的事情 UPDATE test SET CASE WHEN true THEN field 1 END WHERE id 123 换句话说 字段 仅在