2个表的并集没有重复

时间:2016-05-16 15:17:12

标签: sql join union

我有点难以找到明确的答案。 我有2个表,列完全相同,比如t1& T2。 我想从t2向t1添加所有行,但在最终的t1中消除重复。

我可以使用SELECT INTO,但这会让我与我理解的内容重复。目前我使用简单的UNION(它消除重复)到一个新的表t3,但这使得一切都有点乱,因为我需要保留t1中的所有行(所以我做了#34; DROP TABLE t1和将t3重命名为t1")。但是我在思考,有没有更好的方法来做到这一点,也许还有其中一个JOINS?

2 个答案:

答案 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)