从另一个表更新表时出错

时间:2014-03-19 08:03:27

标签: sql netezza

我的陈述是这样的,

update DATA_SOURCE tgt
 set 
 tgt.DATA_SOURCE_NM=src.DATA_SOURCE_NM,
 tgt.ODS_UPDATE_TS=src.ODS_UPDATE_TS
 select DATA_SOURCE_NM,ODS_UPDATE_TS
 from DATA_SOURCE_BKP src
where tgt.DATA_SRC_ID=src.DATA_SRC_ID;

我收到以下错误消息:

  

错误^找到" SELECT" (在char 103)期待关键字

我正在使用Aginity工作台进行netezza。我做错了什么?

3 个答案:

答案 0 :(得分:0)

试试这个

update tgt
 set 
 tgt.DATA_SOURCE_NM=src.DATA_SOURCE_NM,
 tgt.ODS_UPDATE_TS=src.ODS_UPDATE_TS
from DATA_SOURCE tgt
inner join DATA_SOURCE_BKP src on tgt.DATA_SRC_ID=src.DATA_SRC_ID;

- 其中

可能是你可以在最后添加一个where子句来过滤更多的条件

答案 1 :(得分:0)

你应该留下select关键字并在FROM之后进行连接。 我找到了这个解决方案:https://stackoverflow.com/a/2334741/2377961

在你的情况下:

update DATA_SOURCE tgt
  set 
    tgt.DATA_SOURCE_NM=src.DATA_SOURCE_NM,
    tgt.ODS_UPDATE_TS =src.ODS_UPDATE_TS   

 FROM 
   DATA_SOURCE_BKP src, DATA_SOURCE_BKP tgt
 WHERE 
   tgt.DATA_SRC_ID=src.DATA_SRC_ID

应该这样做。 FROM部分的工作方式与:

相同
FROM
    DATA_SOURCE_BKP
INNER JOIN
    DATA_SOURCE_BKP
ON
    DATA_SOURCE_BKP.DATA_SRC_ID = DATA_SOURCE_BKP.DATA_SRC_ID

答案 2 :(得分:0)

删除行

时有效
  

选择DATA_SOURCE_NM,ODS_UPDATE_TS