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

如何优化多列内连接的INSERT INTO...SELECT语句以更新指定字段

修正后的INSERT INTO...SELECT语句

原语句的问题在于多次内连接CUST_DAY0_MERGE会导致匹配多个旧ID的记录被重复插入,同时没有按照需求替换CUST_ID和CUST_SOURCE_UNIQUE_ID字段。以下是完全符合需求的修正语句:

INSERT INTO CUST_REVIEWS(
    CUST_REVIEW_ID,
    RUN_DATE,
    CUST_ID,
    CUST_SOURCE_UNIQUE_ID,
    CUST_SOURCE_REF_ID
)
SELECT 
    reviews.CUST_REVIEW_ID,
    reviews.RUN_DATE,
    merge.NEW_CUST_ID AS CUST_ID,
    merge.NEW_CUST_ID AS CUST_SOURCE_UNIQUE_ID,
    reviews.CUST_SOURCE_REF_ID
FROM CUST_REVIEWS reviews
INNER JOIN CUST_DAY0_MERGE merge
    ON reviews.CUST_SOURCE_REF_ID IN (merge.OLD_REF_ID_1, merge.OLD_REF_ID_2, merge.OLD_REF_ID_3);

关键修改说明:

  • 简化连接逻辑:用一次INNER JOIN配合IN子句,一次性匹配CUST_SOURCE_REF_ID与三个旧ID中的任意一个,避免多次连接带来的冗余数据和性能损耗。
  • 替换目标字段:在SELECT子句中,明确将CUST_ID和CUST_SOURCE_UNIQUE_ID设置为merge.NEW_CUST_ID,其余字段直接保留原CUST_REVIEWS表的取值。
  • 可选去重优化:如果存在单条CUST_REVIEWS记录同时匹配多个旧ID的场景,可以在SELECT后添加DISTINCT关键字,避免重复插入相同的新记录:
SELECT DISTINCT
    reviews.CUST_REVIEW_ID,
    reviews.RUN_DATE,
    merge.NEW_CUST_ID AS CUST_ID,
    merge.NEW_CUST_ID AS CUST_SOURCE_UNIQUE_ID,
    reviews.CUST_SOURCE_REF_ID

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:11:25