Teradata中用Table B的column3更新Table A的column3报错求助
Teradata关联表更新的正确写法
你当前的UPDATE语法不符合Teradata的规范,Teradata不支持这种直接在UPDATE中使用JOIN的写法,这是导致报错的原因。以下是两种可行的正确方案:
方案1:使用MERGE语句(推荐)
MERGE是Teradata中处理关联更新的标准方式,逻辑清晰且效率较高:
MERGE INTO table_A AS target USING table_B AS source ON target.column1 = source.column1 AND target.column2 = source.column2 WHEN MATCHED THEN UPDATE SET target.column3 = source.column3;
方案2:使用UPDATE结合子查询
如果更习惯UPDATE语法,可以通过关联子查询实现,注意加上WHERE EXISTS避免无匹配行被更新为NULL:
UPDATE table_A SET column3 = ( SELECT column3 FROM table_B WHERE table_B.column1 = table_A.column1 AND table_B.column2 = table_A.column2 ) WHERE EXISTS ( SELECT 1 FROM table_B WHERE table_B.column1 = table_A.column1 AND table_B.column2 = table_A.column2 );
内容的提问来源于stack exchange,提问作者Yumeng Xu
相关产品推荐
相关产品推荐

