2014-09-05 79 views
1

我遇到了一些SQL请求的麻烦。从表中删除其他数据库的aa <> aa

我有2数据库,具有相同的表(结构,而不是内容)

我想删除所有从数据库1行,当两个各自领域的不对应于DATABASE2的人。

举例: d1.table.field1!= d2.table.field1 and d1.table.field2!= d2.table.field2 - >删除这一行 否则,请不要。

现在,这里是我的实际(不工作)代码:

DELETE 
FROM table 
WHERE table.field1 NOT IN (SELECT table.field1 FROM [email protected]) 
AND table.field2 NOT IN (SELECT table.field2 FROM [email protected]) 

回答

0

我觉得现在的问题是,你从不同的行匹配field1field2。如果这个想法是这两个领域都必须来自同一行,这应该工作:

DELETE FROM table 
WHERE NOT EXISTS (
    SELECT * 
    FROM [email protected] tt 
    WHERE tt.field1=table.field1 AND tt.field2=table.field2 
) 

SELECTNOT EXISTS的条件确保对field1, field2必须属于同一行中database2的表。

+0

太棒了,它工作得很好。谢谢 – Syri 2014-09-05 10:15:44

+0

另一种选择是'where(field1,field2)不在(从table @ database2选择field1,field2)' – 2014-09-05 12:52:18

+0

@a_horse_with_no_name对,Oracle允许你这样做。我已经超过六年没有使用甲骨文了,所以我开始忘记。谢谢! – dasblinkenlight 2014-09-05 12:59:13