如何实现BI到DP表字段更新?含ChainID与Chaincode映射规则
解决方案:基于映射规则更新DP表字段
根据需求,我们需要按照ChainID与Chaincode的映射规则,用BI表的BrandName和Description字段更新DP表的Brand和BrandDescription字段,以下是两种可行的实现方式:
方法一:使用UPDATE JOIN(适用于SQL Server、MySQL等)
这种方式通过JOIN条件直接匹配映射规则,语法简洁高效:
UPDATE dp SET dp.Brand = bi.BrandName, dp.BrandDescription = bi.Description FROM DP dp JOIN BI bi ON (bi.ChainID = 1 AND dp.Chaincode IN ('FSC', 'PRC')) OR (bi.ChainID = 3 AND dp.Chaincode = 'EPRC');
执行上述语句后,查询DP表即可得到预期结果:
SELECT ChainCode, Brand, BrandDescription FROM DP;
方法二:使用子查询(通用兼容型)
如果数据库不支持UPDATE JOIN语法(如部分Oracle版本),可以采用子查询结合EXISTS过滤的方式:
UPDATE DP SET Brand = ( SELECT BrandName FROM BI WHERE (ChainID = 1 AND DP.Chaincode IN ('FSC', 'PRC')) OR (ChainID = 3 AND DP.Chaincode = 'EPRC') ), BrandDescription = ( SELECT Description FROM BI WHERE (ChainID = 1 AND DP.Chaincode IN ('FSC', 'PRC')) OR (ChainID = 3 AND DP.Chaincode = 'EPRC') ) WHERE EXISTS ( SELECT 1 FROM BI WHERE (ChainID = 1 AND DP.Chaincode IN ('FSC', 'PRC')) OR (ChainID = 3 AND DP.Chaincode = 'EPRC') );
该方式通过子查询获取对应更新值,同时用EXISTS确保只更新符合映射规则的记录。
内容的提问来源于stack exchange,提问作者Angel D'souza
相关产品推荐
相关产品推荐

