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

如何将表数据复制到开头含自增列的目标表?

可行解决方案

方法1:指定目标表的非自增列(推荐)

明确列出目标表starchive中除开头自增列之外的所有列,确保顺序和源表stflagged的列完全对应,数据库会自动为自增列生成值:

INSERT INTO `starchive` (列名1, 列名2, 列名3) -- 替换为starchive中除自增列外的所有列
SELECT f.* FROM `stflagged` f;

方法2:在SELECT开头补充自增列的占位值

因为自增列在目标表开头,需要在SELECT语句最前面加上NULL或DEFAULT,让数据库自动填充自增值,注意语法正确:

-- 使用NULL占位
INSERT INTO `starchive`
SELECT NULL, f.* FROM `stflagged` f;

-- 或者使用DEFAULT占位
INSERT INTO `starchive`
SELECT DEFAULT, f.* FROM `stflagged` f;

为什么之前的语句失败

你之前的写法INSERT INTO starchive null, SELECT f.*存在语法错误,正确格式应为INSERT INTO 表名 SELECT ...(SELECT列数需匹配目标表总列数),或INSERT INTO 表名 (列列表) SELECT ...,不能在表名后直接写null,。

注意事项

  • 确保源表stflagged的列数 +1(自增列)等于目标表starchive的总列数,列顺序也要对应。
  • 用0替代的话,需确认数据库未开启NO_AUTO_VALUE_ON_ZERO模式,否则0会被当作实际值插入而非触发自增,因此NULL或DEFAULT是更稳妥的选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 04:17:05