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

AWS Redshift多列更新关联查询报错求助

问题原因与解决方案

错误原因

Redshift基于PostgreSQL语法规范,不允许在UPDATE的SET子句中使用目标表的别名(你代码里的t),但SQL Server支持这种写法,这就是报错column "t" of relation "producttest" does not exists的根源。

修正后的代码

直接去掉SET子句里的t.前缀即可,同时可以简化FROM子句的写法:

UPDATE dbo.producttest
SET brand_code = s.mtl_brand_desc,
    prodname = s.pname
FROM raw.data AS s
WHERE Chain = CASE s.chain 
                WHEN 1 THEN 'EPRC'
                WHEN 3 THEN 'FSC'
                WHEN 7 THEN 'CM' 
              END
  AND item_number = REPLACE(s.item_id, '-', '')

如果习惯用JOIN写法,也可以这样写(同样不能在SET里用t.):

UPDATE dbo.producttest
SET brand_code = s.mtl_brand_desc,
    prodname = s.pname
FROM dbo.producttest AS t
JOIN raw.data AS s 
  ON t.Chain = CASE s.chain 
                WHEN 1 THEN 'EPRC'
                WHEN 3 THEN 'FSC'
                WHEN 7 THEN 'CM' 
              END
  AND t.item_number = REPLACE(s.item_id, '-', '')

额外注意点

如果raw.data中存在多条匹配producttest单条记录的情况,Redshift会随机选取一条进行更新,和SQL Server行为一致。如果需要确保更新逻辑的确定性,建议先通过DISTINCT或调整关联条件保证匹配关系唯一。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 05:43:10