MERGE时oracle DELETE记录

时间:2014-03-14 09:42:50

标签: sql oracle merge

我将newtest的记录合并到test

merge into test t
using newtest nt
on (t.id = nt.id)
when matched then
  update
     set t.name = nt.name
when not matched then
  insert (id, name)values (nt.id, nt.name); 

newtest中适合on条件的记录需要删除。

虽然我可以用delete SQL来做,但我想知道它可以在那个MERGE句子中完成吗?

1 个答案:

答案 0 :(得分:0)

正如kordiko澄清的那样,你不能使用MERGE语句从另一个表中删除。您可以在单独的语句中完成删除,如下所示:

DELETE FROM newtest nt
WHERE NOT EXISTS
(SELECT 1 FROM test t where t.id = nt.id);