甲骨文删除行的临时表基于行
我有一个表像这样:甲骨文删除行的临时表基于行
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中不存在不是Temptable任何行从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)
这是行不通的。它正在删除超过它应该。
只截断PermTable并将所有临时记录插入到它中是不是更简单?
TRUNCATE TABLE PERMTABLE --removes所有记录 INSERT INTO PERMTABLE(SELECT * FROM不是Temptable)--the结构相同...
特别是因为你用临时表替换的permtable内容?
我不能作为perm表是其他表的集合。每次加载临时表进行导入时,它只是perm表中数据的一个子集。 – 2013-02-26 14:36:30
这个语句在你的问题中是有点误导性的:“我希望PermTable中任何不存在于TempTable中的行都从PermTable中删除”......这真的是你想要的吗?如果是这样,您将使用TempTable替换PermTable。我在想你的目标是不同的。 – 2013-02-27 13:14:32
您的表格定义应该提及* column *而不是* row *。另外一个有关数据的工作示例将帮助我们理解不应删除的内容。 – 2013-02-26 14:24:10