我有點難以找到明確的答案。 我有兩個完全相同的列表,可以說t1 & t2。 我想添加到t1從t2的所有行,但消除最後的t1中的重複。2個表沒有重複的聯合
我可以使用SELECT INTO,但這會讓我看到我所瞭解的重複項。目前我使用簡單的UNION(消除重複)到一個新的表t3中,但是這使得一切都有點麻煩,因爲我需要保留t1中的所有行到最後(所以我做了「DROP TABLE t1並將t3重命名爲T1" )。但我在想,有一個更好的方法來做到這一點,也許有一個JOINS?
我有點難以找到明確的答案。 我有兩個完全相同的列表,可以說t1 & t2。 我想添加到t1從t2的所有行,但消除最後的t1中的重複。2個表沒有重複的聯合
我可以使用SELECT INTO,但這會讓我看到我所瞭解的重複項。目前我使用簡單的UNION(消除重複)到一個新的表t3中,但是這使得一切都有點麻煩,因爲我需要保留t1中的所有行到最後(所以我做了「DROP TABLE t1並將t3重命名爲T1" )。但我在想,有一個更好的方法來做到這一點,也許有一個JOINS?
只是做一個INSERT
其中的值不會在第一個表已經存在:
Insert Into T1 (Col1, Col2, ...)
Select T2.Col1, T2.Col2, ...
From T2
Where Not Exists
(
Select *
From T1
Where (T1.Col1 = T2.Col1 Or (T1.Col1 Is Null And T2.Col1 Is Null))
And (T1.Col2 = T2.Col2 Or (T1.Col2 Is Null And T2.Col2 Is Null))
And ...
)
@ lad2025關於'NULL'的公平點,但我不太確定第二點。從這個問題來看:'我想從t2中增加所有的行,但是在最後的t1中刪除重複的數據。'我想,所有他想做的事情就是從't2'到't1'插入新記錄而不復制行。 – Siyual
是的,這正是我需要的 – littlerunaway
更新了數據中的'NULL'條件。 – Siyual
INSERT INTO T1 (column1, column2, column3,...columnN)
(SELECT column1, column2, column3,...columnN FROM T2
EXCEPT
SELECT column1, column2, column3,...columnN FROM T1)
我並不需要它來訂購 – littlerunaway
但我需要的結果保存在一個表,不只是返回聯合查詢的結果 – littlerunaway
樣本數據和期望的結果將澄清問題。重複意味着什麼?如果沒有其他信息,人們會假設所有列。因此,'聯盟'將是一個正確的方法。 –