You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从LEGACY_CUST_INFO更新CUST_INFO表NULL列失败,求正确SQL实现

解决CUST_INFO表中NULL特权编号从LEGACY_CUST_INFO更新的问题

需要将CUST_INFO表中CUST_PRIVILEGE_NUMBER为NULL的记录,通过ROW_ID与LEGACY_CUST_INFO表精确匹配,获取正确值更新,同时设置UPDATED为当前系统时间、UPDATED_BY为'ADMIN'。

两张表的结构及数据如下:

LEGACY_CUST_INFO表数据

ROW_ID  CUST_PRIVILEGE_NUMBER UPDATED    UPDATED_BY
1-AB    2345                  16-JUN-2022 ADMIN
1-AC    3345                  17-JUN-2022 ADMIN
1-AV    2335                  20-JUN-2022 ADMIN
1-AN    2042                  18-JUN-2022 ADMIN
1-AG    2255                  01-JUN-2022 ADMIN

CUST_INFO表数据

ROW_ID  CUST_PRIVILEGE_NUMBER UPDATED    UPDATED_BY
1-AB    NULL                  22-JUN-2022 ADMIN
1-AC    NULL                  22-JUN-2022 ADMIN
1-AV    5409                  22-JUN-2022 ADMIN
1-AN    NULL                  22-JUN-2022 ADMIN
1-AG    8848                  22-JUN-2022 ADMIN

原MERGE语句失效原因

原语句中使用ci.cust_privilege_number != lci.cust_privilege_number作为筛选条件,但SQL中NULL值与任何值的比较结果都是UNKNOWN,不会被纳入查询结果,导致源数据集为空,MERGE无法执行更新操作。

正确的MERGE语句写法

调整源查询的筛选条件,明确匹配CUST_INFO中CUST_PRIVILEGE_NUMBER为NULL的行:

MERGE INTO cust_info dst
USING (
    SELECT lci.row_id, lci.cust_privilege_number
    FROM legacy_cust_info lci
    INNER JOIN cust_info ci ON ci.row_id = lci.row_id
    WHERE ci.cust_privilege_number IS NULL
) src
ON (dst.row_id = src.row_id)
WHEN MATCHED THEN 
    UPDATE SET 
        dst.cust_privilege_number = src.cust_privilege_number, 
        dst.updated = SYSDATE, 
        dst.updated_by = 'ADMIN';

备选方案:使用UPDATE语句

如果更倾向于使用UPDATE而非MERGE,也可以采用以下写法:

UPDATE cust_info dst
SET 
    cust_privilege_number = (
        SELECT lci.cust_privilege_number 
        FROM legacy_cust_info lci 
        WHERE lci.row_id = dst.row_id
    ),
    updated = SYSDATE,
    updated_by = 'ADMIN'
WHERE dst.cust_privilege_number IS NULL
AND EXISTS (
    SELECT 1 
    FROM legacy_cust_info lci 
    WHERE lci.row_id = dst.row_id
);

添加EXISTS条件是为了避免更新那些在LEGACY_CUST_INFO中无匹配ROW_ID的行(若存在此类数据)。

内容的提问来源于stack exchange,提问作者Cool_Oracle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 03:37:18