2016-02-18 33 views
0

如何檢查這是在A1的名稱,如果已經存在於A2,如果名稱不存在在A2只有通過PL/SQL存儲過程來消除重複數據

SQL> select * from a1; 

NAME 
-------------------- 
ashok 
bahrath 
manoj 
anoop 


SQL> select * from a2; 

NAME 
-------------------- 
manoj 
bahrath 
ashok 
sharath 
+0

這似乎更像是一個SQL問題比Vaadin之一。即使如此,它也太寬泛了,您應該嘗試提供更多細節,並讓問題更清楚。 – Morfic

回答

1

只是一個基本的插入A2 INSERT INTO ... SELECT ...聲明將在這裏工作:

INSERT INTO A2 
SELECT A1.NAME 
FROM A1 
WHERE A1.NAME NOT IN (SELECT A2.NAME FROM A2); 

託尼星火的角度來看,在萬一發生此查詢是給你的問題,得到一個新的數據庫。 (只是開玩笑......)左外部連接版本應該工作:

INSERT INTO A2 
SELECT A1.NAME 
FROM A1 
    LEFT OUTER JOIN A2 ON A1.Name = A2.Name 
WHERE A2.Name IS NULL; 
+0

在聲明中所使用的數據庫系統是有限的,有的只支持1000 -1500項,相信左外連接會是更好的選擇 –

+0

謝謝@ TonyStark42。添加。 – JNevill

+0

@ TonyStark42:您可能會考慮的「限制」是「IN」運算符的**常量**值的數量限制,例如, (1,2,3)'中的x。幾個DBMS確實有這個限制。但是現代DBMS沒有限制它可以使用子選擇處理的行數。 –