2017-01-25 15 views
0

私は5列のテーブルを持っています。私はこの表に2列のユニークなインデックスを追加しました。しかし、重複があったときはいつでも、クエリはエラーで停止していました。重複する挿入を避ける - SQL Server

ので、MySQLの中で私が

insert IGNORE 
into TABLENAME1 (COLUMNS) 
SELECT COLUMNS from TABLENAME2 

を使用して、私は、重複エラーを克服し、他の行を挿入することができました。

SQL Serverで同じことを達成してもらえますか?言い換えれば、mysqlの重複行をスキップして他の行を挿入するIGNOREと同等のものは何ですか?

+1

*一意性に違反する行を許可する*ユニーク*インデックスを持つ点はどうですか?悪いデータを持っているのは、エラー処理やデータのインポート処理を改善するよりも本当に良いですか? –

答えて

1

相当品がありません。 代わりに、あなたはあなたがユニーク制約をドロップし、IGNORE_DUP_KEY = ONとにそれを作成することができます...サブクエリまたは存在を使用して、他のバージョンがあり、あなたの挿入時に送信先テーブルに

Insert INTO TARGET 
SELECT * FROM SOurce 
LEFT JOIN Target 
On .. 
WHERE Target.Key IS NULL 

に参加

0

を残したはずです。..あなたは以下のユニークなconstraint..iアドバイスが定義以下

でユニーク制約
2.createにそれを既存の

1.dropステップ変更することはできませんので、

あなたは一意のキーを持っているし、まだ重複を挿入するためにwan't場合、これが唯一のオプションです

+0

ありがとう、私はこれを使用することができます....すべての挿入が完了したら、私は重複を削除するために削除ステートメントを実行する必要があります...私は右ですか? – Oggu

+0

はい、そうです。 – TheGameiswar

-2

これを試してみてください。

INSERT INTO TABLE1 (f1,f2,f3,f4,f5) 
SELECT DISTINCT v1,v2,v3,v4,v5 
FROM TABLE2 

は、単純なDISTINCTコマンドである可能性があり、あなたの問題 チャオを解決することができます

+1

これは役に立ちません。一意索引が 'f1、f2'にある場合、' 1,2,3,4,5'や '1,2,3,5,4'のような2つの行がある場合でも、制約に違反します。 –

関連する問題