Oracle根据临时表中的行从表中删除行

时间:2013-02-26 14:13:40

标签: oracle temp-tables

我有一张这样的表:

PermTable
Col1 Primary Key
Col2 Primary Key
Col3 Primary Key
Other rows

我正在将文件中的数据加载到临时表中,其结构与PermTable基本相同:

TempTable
Col1 Primary Key
Col2 Primary Key
Col3 Primary Key
Other rows

我希望从PermTable中删除Tempmable中不存在的PermTable中的任何行

我正在使用的SQL是:

DELETE FROM PermTable WHERE NOT EXISTS
  ( SELECT NULL FROM TempTable
    WHERE TempTable.Col1 = PermTable.Col1
     AND TempTable.Col2 = PermTable.Col2
     AND TempTable.Col3 = PermTable.Col3 )

这不起作用。它正在删除超过应有的数量。

1 个答案:

答案 0 :(得分:0)

仅截断PermTable并将所有临时记录插入其中会不会更简单?

TRUNCATE TABLE PERMTABLE - 删除所有记录 INSERT INTO PERMTABLE(SELECT * FROM TEMPTABLE) - 结构相同......

特别是因为你用temp表替换了permtable的内容?