SQL Server の INSERT INTO SELECT ステートメントは、データの重複を効率的に回避します
データベース操作では、重複を避けながらあるテーブルから別のテーブルにデータを挿入するのが一般的なタスクです。この記事では、ID の重複を避けるために Table1 のレコードを Table2 に効率的に追加する方法について説明します。
1 つの方法は、IF-ELSE ステートメントを使用して、挿入する前に ID が Table2 に存在するかどうかを確認することです。
<code class="language-sql">IF NOT EXISTS(SELECT 1 FROM Table2 WHERE Id=1) INSERT INTO Table2 (Id, name) SELECT Id, name FROM Table1 ELSE INSERT INTO Table2 (Id, name) SELECT Id, name FROM Table1 WHERE Table1.Id1</code>
ただし、この方法では、条件に基づいて複数の INSERT INTO-SELECT ステートメントを記述する必要があります。より効率的なソリューションを求めて、3 つの代替案を検討します。
1. 存在しません
<code class="language-sql">INSERT INTO TABLE_2 (id, name) SELECT t1.id, t1.name FROM TABLE_1 t1 WHERE NOT EXISTS(SELECT id FROM TABLE_2 t2 WHERE t2.id = t1.id)</code>
2.
では使用しないでください<code class="language-sql">INSERT INTO TABLE_2 (id, name) SELECT t1.id, t1.name FROM TABLE_1 t1 WHERE t1.id NOT IN (SELECT id FROM TABLE_2)</code>
3. LEFT JOIN/IS NULL を使用します
<code class="language-sql">INSERT INTO TABLE_2 (id, name) SELECT t1.id, t1.name FROM TABLE_1 t1 LEFT JOIN TABLE_2 t2 ON t2.id = t1.id WHERE t2.id IS NULL</code>
これら 3 つのメソッドのうち、LEFT JOIN/IS NULL メソッドは他のメソッドよりも効率が低くなります。重複を避けながら SQL Server の INSERT INTO SELECT クエリにデータを挿入するには、NOT EXISTS および NOT IN 手法を使用すると最高のパフォーマンスが得られます。
以上がSQL Server で INSERT INTO SELECT を使用するときに重複を効率的に回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。