在 Oracle 数据库 (11gR2) 中,我有一个表 my_table
包含列(序列、col1、col2、col3)。我想将从其他表查询的值插入到表中,即 insert into my_table select <query from other tables>
。问题是主键是四列,因此我需要添加一个从 0 开始直到要插入的行数的序列(顺序不是问题)。
我尝试使用这样的循环:
DECLARE
j NUMBER;
r_count number;
BEGIN
select count(1) into r_count from <my query to be inserted>;
FOR j IN 0 .. r_count
LOOP
INSERT INTO my_table
select <my query, incorporating r_count as sequence column> ;
END LOOP;
END;
但是没用,居然循环了r_count
每次都尝试插入整行,从逻辑上讲它应该这样做。如何通过添加序列列来实现预期目标并插入行?
最佳答案
不要循环执行此操作。只需使用row_number()
:
INSERT INTO my_table(seq, . . .)
select row_number() over (order by NULL) - 1, . . .
from . . .;
关于sql - 如何通过添加序列列来插入列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38155778/