2014-09-05 47 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

相關問題