我有点难以找到明确的答案。 我有两个完全相同的列表,可以说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
样本数据和期望的结果将澄清问题。重复意味着什么?如果没有其他信息,人们会假设所有列。因此,'联盟'将是一个正确的方法。 –