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

SQL插入数据表时如何跳过指定列无需手动列出其余所有列?

跳过指定列插入数据的简化SQL方案

首先确认前提:你要跳过的ID列必须满足以下任意一个条件,否则省略插入会触发报错:

  • 配置了自增属性(如MySQL的AUTO_INCREMENT、PostgreSQL的serial类型)
  • 已设置默认值
  • 列属性允许为NULL

方案1:全数据库通用的高效列名生成方式

不需要手动敲所有列,直接查询对应数据库的系统表,过滤掉要跳过的ID列,一键生成需要插入的列列表:

  • MySQL执行语句:
SELECT GROUP_CONCAT(COLUMN_NAME) 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_SCHEMA = '你的数据库名' 
  AND TABLE_NAME = '你的目标表名' 
  AND COLUMN_NAME != 'ID';
  • PostgreSQL执行语句:
SELECT STRING_AGG(COLUMN_NAME, ',') 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_SCHEMA = '你的schema名' 
  AND TABLE_NAME = '你的目标表名' 
  AND COLUMN_NAME != 'ID';

把查询得到的列名结果直接复制到INSERT语句的列名括号里即可,列多的时候能节省大量手动输入时间,且不会出现列顺序错配的问题,生产环境优先推荐这个方案。

方案2:省略列名的快速写法(仅适合临时操作,不推荐生产环境用)

如果是自己本地临时插数据,不需要长期维护这个SQL,可以直接给ID列传NULL或者DEFAULT占位,不用写列名:

注意:该写法要求VALUES中的值顺序必须和表定义的列顺序完全一致,表新增/删除列后这个写法会直接报错或者插入脏数据。

  • MySQL示例(ID为自增列):
INSERT INTO TABLE_NAME VALUES (NULL, '张三', 25, '男', 8000);
  • PostgreSQL示例(ID为自增列):
INSERT INTO TABLE_NAME VALUES (DEFAULT, '张三', 25, '男', 8000);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 18:27:03