DB2(IBM Power System)UPDATE语句改写求助:关联取最新记录更新
正确的UPDATE语句写法
可以通过先获取tableB中指定PRDCOD的最新记录,再基于该记录的SRVRSP值判断是否执行更新,具体语句如下:
方案一:使用CTE(可读性更强)
WITH LatestTableB AS ( SELECT PRDCOD, SRVRSP FROM library1/tableB WHERE PRDCOD = '5520' ORDER BY timstp DESC FETCH NEXT 1 ROWS ONLY ) UPDATE library1/tableA SET SPRTXT01 = '0/9' WHERE NPROD = (SELECT PRDCOD FROM LatestTableB) AND SPRTXT01 <> '0/9' AND (SELECT SRVRSP FROM LatestTableB) = 'SUCCESSFUL';
方案二:嵌套子查询(更简洁)
如果环境不支持CTE,可直接用嵌套子查询实现相同逻辑:
UPDATE library1/tableA SET SPRTXT01 = '0/9' WHERE NPROD = '5520' AND SPRTXT01 <> '0/9' AND ( SELECT SRVRSP FROM library1/tableB WHERE PRDCOD = '5520' ORDER BY timstp DESC FETCH NEXT 1 ROWS ONLY ) = 'SUCCESSFUL';
逻辑说明
- 优先获取tableB中
PRDCOD='5520'的最新一条记录,确保只基于这条最新数据判断SRVRSP值; - 限定只更新tableA中
SPRTXT01 <> '0/9'的行,避免重复更新已符合要求的数据; - 仅当最新记录的
SRVRSP='SUCCESSFUL'时,才执行更新操作,完全匹配需求逻辑。
内容的提问来源于stack exchange,提问作者JMcGucken
相关产品推荐
相关产品推荐

