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

MySQL:update set的坑

目录

一、问题描述

二、为何会出现这样的问题?

三、正确的方案


一、问题描述

我在修改mysql数据表时,看到下面的现象。

我表中原始数据如下:

执行了下面的修改,显示执行成功。

update user_function_record_entity 
set open_id = 8 and reason = '已修改' and create_time = now() 
where id = 2;

再次查询数据如下:

从修改后的数据看,不是我预期的结果,为什么呢?

下面就来分析分析。

二、为何会出现这样的问题?

首先,其根本问题在于 set 后用了 and

因为 set 的语法是,当修改多个值时,是用英文逗号间隔,而不是and间隔。

那为什么在执行命令时,没有提示错误呢。

因为带了and的命令,其真实执行逻辑如下

update user_function_record_entity 
set open_id = (8 and reason = '已修改' and create_time = now())
where id = 2;

因为 (8 and reason = '已修改' and create_time = now())  通过逻辑运算是false,

所以,才会把 open_id 设置为 0 。

三、正确的方案

正确的命令如下

update user_function_record_entity 
set open_id = 8, reason = '已修改', create_time = now()
where id = 2;

原始值:

修改命令执行后:

所以,为了避免这样的坑,记住正确的命令格式。这个坑一般真的很难发现


我是程序员娟娟,

致力将工作中遇到的问题和解决方案记录下来,

分享给更多需要的同行。

如果对你有帮助,不妨点个关注吧!


http://www.kler.cn/news/160665.html

相关文章:

  • HXDSP2441-Demo板
  • 智能优化算法应用:基于卷尾猴算法无线传感器网络(WSN)覆盖优化 - 附代码
  • 外包干了2个多月,技术明显有退步了。。。。。
  • 第十五期长江沙龙:小蜘蛛,大生态落地大坪大融城
  • 开源软件license介绍与检测
  • 本项目基于Spring boot的AMQP模块,整合流行的开源消息队列中间件rabbitMQ,实现一个向rabbitMQ
  • 大模型的RPA应用 | 代理流程自动化(APA),开启智能自动化新纪元
  • 大数据-hive
  • 什么是https加密协议,相比http的好处在哪?
  • Spark RDD惰性计算的自主优化
  • UI自动化Selenium 数据驱动读取Excel
  • java面试题-ArrayList 和 LinkedList 的区别是什么
  • WebStorm:Mac/Win上强大的JavaScript开发工具
  • 第十一节HarmonyOS 常用容器组件2-List和Grid
  • Linux学习笔记3 xshell(lnmp)
  • Harmony OS (eTS语言)的起源和演进
  • Android12蓝牙框架
  • 如何在Spring Boot中优雅地重试调用第三方API?
  • BearPi Std 板从入门到放弃 - 引气入体篇(8)(ADC)
  • 第三方支付通道的优势之(二)-----代扣
  • 【C++】时间time库
  • Stm32_串口的帧(不定长)数据接收
  • 在Linux系统中更换yum源为阿里云
  • postgreSql存储jsonb
  • GitLab发展史,这一篇你知道就够了
  • sqlite - sqlite3_exec - c++回调函数的处理
  • 要求CHATGPT高质量回答的艺术:提示工程技术的完整指南—第 14 章:受控生成提示
  • 浅谈web性能测试
  • Python实现FA萤火虫优化算法优化XGBoost分类模型(XGBClassifier算法)项目实战
  • 深度学习——第2章 深度学习开发环境搭建