Redshift SQL中schema.table.field语法不被识别,如何指定特定表字段?
Redshift跨Schema表更新的语法修正
你的问题出在UPDATE语句的SET子句里,Redshift不支持在要更新的目标字段前重复带上schema.table.前缀——因为UPDATE已经明确指定了目标表是schema.table_A,直接写字段名即可。另外可以给表加别名简化语句,避免重复写长串的schema和表名。
修正后的完整SQL代码如下:
-- 先给table_A添加字段,这部分语法是对的 alter table schema.table_A add column new_var varchar(3); -- 写法1:不带别名的正确更新语句 update schema.table_A set new_var = schema.table_B.new_var from schema.table_B where schema.table_A.record_id = schema.table_B.record_id; -- 写法2:用别名简化(更推荐,可读性更高) update schema.table_A as a set new_var = b.new_var from schema.table_B as b where a.record_id = b.record_id;
补充说明:
- 目标表的字段在SET子句里无需带表名/schema,Redshift会自动关联UPDATE指定的表
- FROM子句里的关联表可以保留
schema.table格式,或者用别名替代,两种写法都能被Redshift识别 - 如果你的当前会话默认schema就是目标schema,甚至可以直接写表名,不用带schema前缀
内容的提问来源于stack exchange,提问作者RobertF
相关产品推荐
相关产品推荐

