繁体   English   中英

插入中的行号

[英]rownumber in insert into

我想在其中一列中插入行号。 But since row_number() is a window ( analytic proper to Oracle ) function which can be used only for select statement is there any other way to insert row number.

例如:

INSERT INTO prnr (pm,GEG_ID,ET_ID,fzg_id,nr,id)
VALUES(p_gpm_id,master_rec.geg_id,master_rec.et_id,
       master_rec.fzg_id,row_number() over (partition by master_rec.geg_id));

我想在程序中使用这个插入语句。

尝试将您的代码重构为INSERT INTO... SELECT

INSERT INTO prnr (pm, GEG_ID, ET_ID, fzg_id, nr, id)
SELECT p_gpm_id, geg_id, et_id, fzg_id, ROW_NUMBER() OVER (PARTITION BY geg_id),
       -- some 6th column here...
FROM master_rec;

如果您的目标只是简单地为id列生成顺序 integer 值(如注释中所述),则使用GENERATED ALWAYS AS IDENTITY选项重新创建现有id列,例如

ALTER TABLE prnr DROP COLUMN id;
ALTER TABLE prnr ADD id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM