Sql 无法获取设置参数内的SELECT(从另一个表)更新
下面的查询给出了如下查询所示的错误。有可能做我想做的事吗?内部选择查询独立工作。如果删除select语句并替换为一个数字,则更新将起作用。 这是在DB210.1上实现的Sql 无法获取设置参数内的SELECT(从另一个表)更新,sql,database,db2,Sql,Database,Db2,下面的查询给出了如下查询所示的错误。有可能做我想做的事吗?内部选择查询独立工作。如果删除select语句并替换为一个数字,则更新将起作用。 这是在DB210.1上实现的 UPDATE tdb2wccu.quot q SET q.prr_ls_asmt_id = ( SELECT prr_ls_asmt_id FROM final TABLE ( INSERT INTO tdb2wcmd.prr_ls_asmt (creat_ts)
UPDATE tdb2wccu.quot q
SET q.prr_ls_asmt_id = (
SELECT prr_ls_asmt_id
FROM final TABLE (
INSERT INTO tdb2wcmd.prr_ls_asmt (creat_ts)
VALUES (CURRENT TIMESTAMP)
)
)
where q.quot_id = 'befc0ec6a6af3c250ac8967f4fd7de56'
错误消息:
[更新-0行,0.000秒][错误代码:-20165,SQL状态:
428FL]DB2SQL错误:SQLCODE=-20165,SQLSTATE=428FL,SQLERRMC=null,
驾驶员=3.63.75
我认为你的语法是错误的。应该是
UPDATE tdb2wccu.quot q
SET q.prr_ls_asmt_id = prr_ls_asmt_id
FROM Second_table
WHERE q1.quot_id = 'befc0ec6a6af3c250ac8967f4fd7de56
您需要具体化数据更改表,然后才能使用它更新另一个表。一种方法是:
WITH t1 (newid) AS (
SELECT prr_ls_asmt_id
FROM final TABLE (
INSERT INTO tdb2wcmd.prr_ls_asmt (creat_ts)
VALUES (CURRENT TIMESTAMP)
)
)
SELECT * FROM FINAL TABLE (
UPDATE tdb2wccu.quot q
SET q.prr_ls_asmt_id = (
SELECT newid FROM t1
)
WHERE q.quot_id = 'befc0ec6a6af3c250ac8967f4fd7de56'
)
我想我不同意,但我也认为我没有完全理解你的意思。你能准确地发布你认为代码应该是什么样子吗?你有机会看一下手册中的错误解释吗?@mustaccio是的,我查过了,但找不到任何有用的结果。如果你发现了什么,请分享。