我有点难以找到明确的答案。 我有2个表,列完全相同,比如t1& T2。 我想从t2向t1添加所有行,但在最终的t1中消除重复。
我可以使用SELECT INTO,但这会让我与我理解的内容重复。目前我使用简单的UNION(它消除重复)到一个新的表t3,但这使得一切都有点乱,因为我需要保留t1中的所有行(所以我做了#34; DROP TABLE t1和将t3重命名为t1")。但是我在思考,有没有更好的方法来做到这一点,也许还有其中一个JOINS?
答案 0 :(得分:1)
只需执行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 ...
)
答案 1 :(得分:0)
INSERT INTO T1 (column1, column2, column3,...columnN)
(SELECT column1, column2, column3,...columnN FROM T2
EXCEPT
SELECT column1, column2, column3,...columnN FROM T1)