Sql 如何将生成的id插入结果表
我有以下疑问Sql 如何将生成的id插入结果表,sql,db2,Sql,Db2,我有以下疑问 SELECT q.pol_id FROM quot q ,fgn_clm_hist fch WHERE q.quot_id = fch.quot_id UNION SELECT q.pol_id FROM tdb2wccu.quot q WHERE q.nr_prr_ls_yr_cov IS NOT NULL 对于该结果集中的每一行,我希望在另一个表中创建一个新行(称之为table1),并使用从table1中插入的行生成的主键更新QUOTE表中的pol_id(来自上述
SELECT q.pol_id
FROM quot q
,fgn_clm_hist fch
WHERE q.quot_id = fch.quot_id
UNION
SELECT q.pol_id
FROM tdb2wccu.quot q
WHERE q.nr_prr_ls_yr_cov IS NOT NULL
对于该结果集中的每一行,我希望在另一个表中创建一个新行(称之为table1),并使用从table1中插入的行生成的主键更新QUOTE表中的pol_id(来自上述结果集)
表1有两列。id和时间戳
我正在使用DB210.1
我尝试过很多事情,但都失败了很长一段时间。谢谢 简单解决方案:为查询结果集创建一个新表,其中包含一个。然后,在运行查询后,使用结果表中新生成的id更新
pol_id
字段
或者,您可以通过使用ROW\u NUMBER()
OLAP函数更手动地执行此操作,我经常发现创建id很方便。为此,可以方便地使用执行以下操作的存储过程:
表1
中获取最大旧id,并将其写入变量old\u max\u id
表1
,可能是这样
INSERT INTO TABLE1
SELECT ROW_NUMBER() OVER (PARTITION BY <primary-key> ORDER BY <whatever-you-want>)
+ OLD_MAX_ID
, CURRENT TIMESTAMP
FROM (<here comes your SQL query>)
插入到表1中
在(按顺序划分)上选择行号()
+旧身份证
,当前时间戳
从()
行号
语句,或者直接使用表1中的ID
您是否计划将
表1
用于其他用途,还是只需要为pol_ID生成递增的ID值?DB210.0只存在于z/OS上;你用的就是这个吗?是的。我计划用表1做其他事情。我们在linux上使用DB2V10.1。谢谢。也许你可以向我们展示一些你尝试过的很多东西,以及为什么它们不适合你?那将有助于我们帮助你。一个潜在的问题是,查询中的UNION
消除了重复项,因此生成的id可能少于需要更新的pol_id
值。那你想做什么?