我在文本文件中有3k ID的列表。我应该找到具有这种ID的行并更新它们。 我希望能像
那样工作WITH RECORD_ID
(ID) AS (
'12345',
...
'32134')
UPDATE MY_TABLE T
SET T.NAME = REPLACE(T.NAME, X'03', '')
WHERE EXISTS (SELECT 1 FROM RECORD_ID R WHERE R.ID = T.ID);
但这不起作用。任何的想法?
答案 0 :(得分:0)
您不仅可以在DB2中的CTE中拥有值列表,还必须UNION ALL
这些值:
WITH RECORD_ID (ID) AS (
SELECT '12345' FROM SYSIBM.SYSDUMMY1 UNION ALL
-- ...
SELECT '32134' FROM SYSIBM.SYSDUMMY1
)
UPDATE MY_TABLE T
SET T.NAME = REPLACE(T.NAME, X'03', '')
WHERE EXISTS (SELECT 1 FROM RECORD_ID R WHERE R.ID = T.ID);
应该工作。
我同意@ X-Zero,但是......似乎IN
子句中的值列表更合适,除非您有特殊原因想要使用CTE。