如何檢查這是在A1的名稱,如果已經存在於A2,如果名稱不存在在A2只有通過PL/SQL存儲過程來消除重複數據
SQL> select * from a1;
NAME
--------------------
ashok
bahrath
manoj
anoop
SQL> select * from a2;
NAME
--------------------
manoj
bahrath
ashok
sharath
如何檢查這是在A1的名稱,如果已經存在於A2,如果名稱不存在在A2只有通過PL/SQL存儲過程來消除重複數據
SQL> select * from a1;
NAME
--------------------
ashok
bahrath
manoj
anoop
SQL> select * from a2;
NAME
--------------------
manoj
bahrath
ashok
sharath
只是一個基本的插入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;
在聲明中所使用的數據庫系統是有限的,有的只支持1000 -1500項,相信左外連接會是更好的選擇 –
謝謝@ TonyStark42。添加。 – JNevill
@ TonyStark42:您可能會考慮的「限制」是「IN」運算符的**常量**值的數量限制,例如, (1,2,3)'中的x。幾個DBMS確實有這個限制。但是現代DBMS沒有限制它可以使用子選擇處理的行數。 –
這似乎更像是一個SQL問題比Vaadin之一。即使如此,它也太寬泛了,您應該嘗試提供更多細節,並讓問題更清楚。 – Morfic