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

Oracle数据库插入自增ID:如何生成起始为1的递增主键

如何为table1生成从1开始的递增id值?

嘿,这个问题得看你使用的数据库类型,不过主流数据库都有对应的方案来生成从1开始的连续递增序号,我给你分常用情况拆解:

通用方案(适用于MySQL、PostgreSQL、SQL Server等多数现代数据库)

你可以用ROW_NUMBER()窗口函数,它能给查询结果的每一行分配一个从1开始的连续序号,完美匹配你的需求。所以[*]处直接填ROW_NUMBER() OVER ()就行。

完整的插入语句长这样:

INSERT INTO table1 (id, value1, value2, ...)
SELECT ROW_NUMBER() OVER (), value1, value2, ... FROM table2;

如果你需要按照table2里的某列顺序来生成id(比如按创建时间排序),可以在OVER()里加ORDER BY来指定规则,比如:

INSERT INTO table1 (id, value1, value2, ...)
SELECT ROW_NUMBER() OVER (ORDER BY table2.create_time DESC), value1, value2, ... FROM table2;

更省心的替代方案(如果id是自增主键)

如果你的table1的id字段已经设置为自增类型(比如MySQL的AUTO_INCREMENT、SQL Server的IDENTITY、PostgreSQL的SERIAL/GENERATED AS IDENTITY),那其实根本不用手动生成id!直接省略id列的插入,数据库会自动帮你生成从1开始的递增主键,语句更简洁:

INSERT INTO table1 (value1, value2, ...)
SELECT value1, value2, ... FROM table2;

这种方式还能避免手动生成序号可能出现的主键冲突问题,推荐优先考虑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:20:51