2016-05-16 15 views
-2

私はこれについて明確な答えを見つけるのに少し苦労しています。 私はまったく同じ列を持つ2つのテーブルを持っていますが、t1 & t2と言うことができます。 t2からすべての行をt1に追加したいが、最後のt1では重複を除去する。重複のない2つのテーブルの和集合

私はSELECT INTOを使用できますが、それは私が理解しているものと重複して私を残します。私は単純なUNION(重複を排除する)を新しいテーブルt3に使用しましたが、最終的にt1のすべての行を保持する必要があるため、すべてがちょっと乱雑になりました( "DROP TABLE t1とt3の名前をt1 ")。しかし、私は考えている、これを行うためのより良い方法がある必要があります、多分ジョインズの1つで?

+0

私は – littlerunaway

+0

を注文するためにそれを必要としないが、私は、テーブルに結果を保存する必要があります、ユニオンクエリの結果を返すだけではありません – littlerunaway

+0

サンプルデータと望ましい結果は、質問を明確にします。重複してどういう意味ですか?他の情報がない場合は、すべての列を想定します。したがって、「UNION」は正しいアプローチになります。 –

答えて

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  ... 
) 
+0

@ lad2025 'NULL'sについての公正なポイントですが、私は2番目のポイントについてはあまりよく分かりません。質問から: 't1からすべての行をt2に追加したいが、最後のt1では重複を取り除きたい。私がしたいことは、新しいレコードを' t2'から 't1'に挿入することです行。 – Siyual

+0

はい、まさに私が必要なものです – littlerunaway

+0

データの 'NULL'条件のために更新されました。 – Siyual

0
INSERT INTO T1 (column1, column2, column3,...columnN) 
(SELECT column1, column2, column3,...columnN FROM T2 
EXCEPT 
SELECT column1, column2, column3,...columnN FROM T1) 
関連する問題