#在Teradata中更新并追加。 / *从表2更新表1中的现有记录。如果表2具有新记录,则在表1中追加新记录* /

时间:2019-11-28 12:14:44

标签: sql teradata

我有table1作为

enter image description here

我有table2作为

enter image description here

我需要用table2值更新table1。两个表中相同的mbr_id记录应替换为table2值。表2中的新mbr_id应该追加到表1中。

预期输出:

enter image description here

我的方法

  1. 从表2中分离现有的mbr_id和新的mbr_id
create table set1 as select * from table2 where mbr_id not in (select mbr_id from table1)
create table set2 as select *  from table2 where mbr_id in (select mbr_id from table1)
  1. 将set1追加到table1
insert into table1 select * from set1
  1. 使用set2更新table1
UPDATE t1
FROM table1  t1,
set2 t2
SET 
sales_bucket = t2.sales_bucket,
pro = t2.pro,
Region = t2.Region
where t1.mbr_id = t2.mbr_id

问题是:有没有更好的方法可以一次执行相同的操作?

1 个答案:

答案 0 :(得分:0)

MERGE语句将UPDATE和INSERT语句组合为带有两个条件测试子句的单个语句: 匹配时,更新。 未匹配时,插入。 您还可以使用MERGE语句通过指定以下内容来删除行:WHEN MATCHED,DELETE。