我有一个目前具有以下结构的表
id, row1
(null), 232
(null), 4455
(null), 16
我希望id成为自动递增的主键,如下所示:
id, row1
1, 232
2, 4455
3, 16
我已经阅读了文档,看起来我需要的功能是AUTO_INCREMENT
,我可以使用ALTER TABLE
语句编辑表格。但是,我似乎无法正确理解语法。我该怎么做呢?是否可以使用预先存在的表格?
答案 0 :(得分:1)
您需要更新以下的现有数据
UPDATE table
SET id = table2.id
FROM
(
SELECT row1, RANK() OVER (ORDER BY val) as id
FROM t1;
) as table2
where table.primaryKey = table2.primaryKey
然后使用以下语法
更改表格-- get the value to start sequence at
SELECT MAX(id) FROM t2;
-- create the sequence
CREATE SEQUENCE seq1 START 5;
-- syntax as of 6.1
-- modify the column to add next value for future rows
ALTER TABLE t2 ALTER COLUMN id SET DEFAULT NEXTVAL('seq1');
答案 1 :(得分:1)
您需要做的是以下内容: 创建新序列:
create table tab2 as select * from tab1 limit 0;
创建一个新表:
insert /*+ direct */ into tab2
select NEXTVAL('sequence_auto_increment'),row1 from tab1;
插入数据:
group1
答案 2 :(得分:0)
如果您想使用Auto_Increment功能,
1)将数据复制到临时表
2)使用自动增量
重新创建基表3)将数据复制回其他列
如果您只想要输入数字,请参阅Nazmul的其他答案