我想将ID列添加到现有表中。我添加了新的id列。现在它包含所有空值。我希望用递增的唯一ID填充它。
现在我的表就像下面一样,
ID | col1
------------
null data1
null data2
null data3
我想按照以下方式更新我的表格,
ID | col1
------------
1 data1
2 data2
3 data3
oracle SQL查询是做什么的?
答案 0 :(得分:2)
一种方法使用merge
:
merge into t using
(select t.*, row_number() over (order by rowid) as seqnum
from t
) s
on (s.rowid = t.rowid)
when matched then update
set id = seqnum;
Here是一个SQL小提琴。
答案 1 :(得分:2)
如果您希望将来为序列生成的该列分配唯一值,则创建序列并使用该序列更新现有列:
create sequence my_table_seq;
update my_table
set id = my_table_seq.nextval;
这具有额外的好处,即序列自动与表中的最高值“同步”。
答案 2 :(得分:1)
您可以使用ROWNUM
功能:
Oracle SQL ROWNUM函数返回一个数字,表示Oracle从表或连接表中选择行的顺序。第一行的ROWNUM为1,第二行的ROWNUM为2,依此类推。
UPDATE Table1 SET ID = ROWNUM;
现场演示