news 2026/5/6 23:24:36

UPDATE ... SET 多字段赋值

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
UPDATE ... SET 多字段赋值

update afinfo set age=45 and birth=birth-YEAR(45) where name="陈晓";

——SQL 错误 [1292] [22001]: Data truncation: Incorrect datetime value: '45'

SQL 语句存在多个语法和逻辑错误,导致了Data truncation: Incorrect datetime value: '45'错误。

错误原因拆解:
  1. SET子句使用了错误的ANDUPDATE语句中,多个字段赋值应该用 ** 逗号,** 分隔,而不是ANDANDWHERE子句的逻辑运算符,写在SET里会被解析为逻辑判断,导致语法异常。

  2. birth=birth-YEAR(45)是无效语法YEAR()函数需要传入一个日期 / 时间字段,而不是数字45birth-YEAR(...)这种运算方式也完全错误,无法实现日期的加减。

  3. 数据类型错误由于上述语法错误,MySQL 会错误地尝试将45作为日期时间值解析,因此报出了Incorrect datetime value: '45'错误。


✅ 正确的 SQL 语句

如果你的需求只是修改陈晓的年龄为 45,正确写法如下:

sql

UPDATE ainfo SET age = 45 WHERE name = '陈晓';

📌 进阶场景:同时更新年龄和出生日期

如果你的表中同时有agebirth字段,且需要让两者保持一致(比如设置年龄为 45 岁,自动更新出生日期),可以用以下两种方式实现:

方式 1:直接指定年龄,不更新出生日期

(推荐,除非业务强制要求维护两个冗余字段)

sql

UPDATE ainfo SET age = 45 WHERE name = '陈晓';
方式 2:设置年龄为 45 岁,自动推算出生日期

(假设当前年份为 2026 年,MySQL 环境)

sql

UPDATE ainfo SET age = 45, birth = DATE_SUB(CURDATE(), INTERVAL 45 YEAR) WHERE name = '陈晓';

💡 关键语法说明

  1. UPDATE ... SET多字段赋值多个字段之间必须用 ** 逗号,** 分隔,不能用AND

    sql

    -- 正确 UPDATE table SET col1 = val1, col2 = val2 WHERE ...; -- 错误 UPDATE table SET col1 = val1 AND col2 = val2 WHERE ...;
  2. 日期运算函数

    • CURDATE():获取当前日期(如2026-05-06
    • DATE_SUB(date, INTERVAL N YEAR):从指定日期减去 N 年
    • YEAR(date):获取日期的年份(如YEAR('2026-05-06')返回2026

🛠️ 常见避坑指南

  • 不要在UPDATESET子句中使用AND连接多个字段赋值。
  • agebirth属于冗余字段,业务中建议只维护birth,通过TIMESTAMPDIFF(YEAR, birth, CURDATE())动态计算年龄,避免数据不一致。
  • 字符串类型的name值,需要用单引号'陈晓'包裹,部分数据库也支持双引号,但单引号兼容性更好。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/6 23:16:31

LLM上下文工程化实践:从向量检索到智能问答的完整解决方案

1. 项目概述:从“上下文”到“工程化”的桥梁 如果你是一名AI应用开发者,或者正在尝试将大语言模型(LLM)集成到你的产品中,那么“上下文管理”这个词对你来说一定不陌生,甚至可能是一个痛点。我们常常会遇到…

作者头像 李华
网站建设 2026/5/6 23:16:30

利川乡村民宿:口碑驱动的选品与运营策略解析

利川乡村民宿:口碑驱动的选品与运营策略解析“‘利川乡村民宿的核心竞争力,从来不是装修多豪华,而是能否让游客真正享受清凉与安心’——这是利川乡村民宿行业的共识,但如何选到靠谱的民宿、理解其运营逻辑,却困扰着不…

作者头像 李华
网站建设 2026/5/6 23:15:29

从零到千档:AXOrderBook如何重塑A股市场深度洞察

从零到千档:AXOrderBook如何重塑A股市场深度洞察 【免费下载链接】AXOrderBook A股订单簿工具,使用逐笔行情进行订单簿重建、千档快照发布、各档委托队列展示等,包括python模型和FPGA HLS实现。 项目地址: https://gitcode.com/gh_mirrors/…

作者头像 李华
网站建设 2026/5/6 23:12:30

chatgpt.js性能优化技巧:让你的AI应用运行更快

chatgpt.js性能优化技巧:让你的AI应用运行更快 【免费下载链接】chatgpt.js 🤖 A powerful, open source client-side JavaScript library for ChatGPT 项目地址: https://gitcode.com/gh_mirrors/ch/chatgpt.js chatgpt.js是一个功能强大的开源客…

作者头像 李华
网站建设 2026/5/6 23:09:27

如何在UE4/UE5游戏中实现脚本注入与实时编辑:UE4SS完整指南

如何在UE4/UE5游戏中实现脚本注入与实时编辑:UE4SS完整指南 【免费下载链接】RE-UE4SS Injectable LUA scripting system, SDK generator, live property editor and other dumping utilities for UE4/5 games 项目地址: https://gitcode.com/gh_mirrors/re/RE-UE…

作者头像 李华