簡體   English   中英

DB2 LUW MERGE 使用同一張表更新不同的行

[英]DB2 LUW MERGE using same table to update a different row

我的表格數據看起來像這個屏幕截圖

我嘗試不佳的 SQL 是這個...
MERGE INTO PRINT 目標
使用
(
select ID,PDF_FILE
從打印
其中日期(打印)='2022-01-06'
並且 PDF_FILE 不是 null
) 香腸
開(目標.ID = sause.ID)
當匹配然后
UPDATE SET target.PDF_FILE = sause.PDF_FILE

它正在更新表中的所有行。 我不想要這個。

我怎樣才能讓它只更新具有空 PDF_FILE 的 1 個最新的 PRINTED 行?

這個想法是枚舉目標行並僅更新第一行。

MERGE INTO 
(
SELECT ID, PDF_FILE, ROW_NUMBER () OVER (PARTITION BY ID ORDER BY PRINTED DESC) AS RN_ 
FROM PRINT
WHERE
-- Below is an appropriate condition for
-- the target rows to distinguish them from the source row

-- PDF_FILE IS NULL
date (PRINTED) <> '2022-01-06'
) target
USING
(
select ID,PDF_FILE
from PRINT
where date (PRINTED) = '2022-01-06'
and PDF_FILE is not null
) sause
ON target.ID = sause.ID AND target.RN_ = 1 
WHEN MATCHED THEN
UPDATE SET target.PDF_FILE = sause.PDF_FILE

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM