sql - DB2:使用选择插入,每次插入时为每一个新行增加一列?

标签 sql db2

我试图将一个表中一列的内容复制到另一个表中,同时希望为创建的每一行使用递增的数字填充主键列:

我尝试执行以下操作:

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/

相关文章:

sql - 无效的操作结果集被关闭 errorcode 4470 sqlstate null - DB2 数据提取

sql - DB2 SQL 全选,列为

linux - 在 windows 上的 db 之间传输数据到 linux

java - 找不到 KeyStore 的 DB2 DataSource 属性

SQL - 当日期不包含玩家时仅选择玩家和日期

sql - 为什么显示 SQL 语句的进度不切实际?

php - 在mysql中选择中间元素?

sql - 大型 PostgreSQL 表 : better to add a column or create a new table to store metadata?

sql - 索引所有作为表外键的列

mysql - SQL 触发器回退