多表关联Update SQL语句执行失败,无法更新Data表问题咨询
问题原因
- 核心原因为两张表的关联字段值无法匹配:
Average表的LSP字段值为ABC_XYZ、DEF_XYZ,而Data表的LSP字段值统一带有RECON_前缀,为RECON_ABC_XYZ、RECON_DEF_XYZ。使用DATA.LSP = AVERAGE.LSP作为关联条件时没有符合要求的匹配行,因此更新语句执行后不会修改任何数据。
解决方法
调整JOIN关联条件,对Data表的LSP字段做字符串处理,去除RECON_前缀后再和Average表的LSP字段匹配即可,不同数据库的语法差异极小,以下为通用实现方案:
- 字符串截取实现(适配绝大多数数据库)
UPDATE DATA INNER JOIN AVERAGE ON SUBSTRING(DATA.LSP, 7) = AVERAGE.LSP -- RECON_共6个字符,从第7位开始截取即可匹配 SET DATA.Runid = AVERAGE.Runid
- 字符串替换实现
UPDATE DATA INNER JOIN AVERAGE ON REPLACE(DATA.LSP, 'RECON_', '') = AVERAGE.LSP SET DATA.Runid = AVERAGE.Runid
内容的提问来源于stack exchange,提问作者MURARI PANDEY
相关产品推荐
相关产品推荐

