PostgreSQL整列更新报错求助:从另一列取值更新整列
PostgreSQL整列更新报错修复方案
错误原因
你执行的SQL报错是因为:
- PostgreSQL的UPDATE语法中,
SET子句不能使用目标表的别名(比如你的t),直接写列名即可。 - 语句中在
FROM里重复关联了目标表dm_turnover_tmp_sales,属于冗余逻辑,还可能引发重复更新问题。
正确SQL写法
写法一:简化关联(推荐)
直接通过FROM子句关联两张表,用WHERE匹配关联条件:
UPDATE turnoverrate_tm.dm_turnover_tmp_sales t SET dmitm = w.dmitm FROM turnoverrate_tm.w2nx3l04i w WHERE w.dmitm = t.sditm;
写法二:子查询方式(适合需严格过滤匹配行的场景)
用子查询确保仅更新有匹配数据的行,避免无匹配行被设为NULL:
UPDATE turnoverrate_tm.dm_turnover_tmp_sales SET dmitm = ( SELECT w.dmitm FROM turnoverrate_tm.w2nx3l04i w WHERE w.dmitm = sditm ) WHERE EXISTS ( SELECT 1 FROM turnoverrate_tm.w2nx3l04i w WHERE w.dmitm = sditm );
内容的提问来源于stack exchange,提问作者Arpan Ghimire
相关产品推荐
相关产品推荐

