我试图将一个表中一列的内容复制到另一个表中,同时希望为创建的每一行使用递增的数字填充主键列:
我尝试执行以下操作:
INSERT INTO Table1 (col1, col2) VALUES((SELECT col1 FROM table2), (SELECT NEXTVAL FOR col2_SEQ FROM sysibm.sysdummy1));
但得到以下错误:
DB21034E The command was processed as an SQL statement because it was not a
valid Command Line Processor command. During SQL processing it returned:
SQL0348N "NEXTVAL FOR col2_SEQ" cannot be specified in this
context. SQLSTATE=428F
似乎我不能以这种方式使用序列值,还有其他方法可以实现我想要做的事情吗?我只需要 table1 中的 col2 为 table2 中 col1 中的每个新条目填充一个唯一的 BIGINT
最佳答案
如果您使用的是 Linux/Unix/Windows(可能也适用于其他人),我认为您只需要 NEXT VALUE FOR sequence
.在这种情况下,您不需要从 sysdummy 中进行额外的选择。
INSERT INTO table1 (col1, col2)
SELECT col1, NEXT VALUE FOR col2_SEQ
FROM table2
关于sql - DB2:使用选择插入,每次插入时为每一个新行增加一列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9096541/