You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL执行带关联的插入语句报1364字段无默认值问题求解

报错原因
  • 语法使用场景错误:你的需求是更新Table1已存在记录的字段值,但你使用了INSERT语句,INSERT的作用是插入全新的行数据,而非修改已有行的字段内容。
  • 字段映射完全颠倒:你写的语句尝试向Table1插入Calculated_size字段,但Table1本身没有这个字段;同时SELECT子句从Table2取Size字段,Table2也不存在该字段,字段和表的对应关系完全写反。
  • 主键约束直接触发报错:Table1的ID是主键,自带非空、唯一约束且无默认值,你执行INSERT时未给ID字段传值,因此直接触发1364报错,该报错属于主键约束的强制校验,和SQL模式的STRICT_TRANS_TABLES参数无关,关闭该参数自然不会生效。
解决方案

MySQL 5.7原生支持多表关联更新语法,直接使用UPDATE配合内连接即可实现需求,正确语句如下:

UPDATE Table1 
INNER JOIN Table2 ON Table1.ID = Table2.ID
SET Table1.Size = Table2.Calculated_size;

执行效果说明

  • 内连接只会匹配两张表同时存在的ID记录,也就是ID=2的行,只会更新该行的Size字段为Table2对应的Calculated_size值S
  • ID=1的行因为没有在Table2中匹配到对应ID,不会被更新,Size字段保持为空,完全符合你的预期结果。

内容的提问来源于stack exchange,提问作者Fernanda Andretto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 02:15:02