Die INSERT INTO SELECT-Anweisung in SQL Server vermeidet effizient doppelte Daten
Bei Datenbankoperationen ist das Einfügen von Daten aus einer Tabelle in eine andere unter Vermeidung von Duplikaten eine häufige Aufgabe. In diesem Artikel wird erläutert, wie Sie Datensätze in Tabelle1 zu Tabelle2 effizient hinzufügen können, um eine Duplizierung von IDs zu vermeiden.
Eine Möglichkeit besteht darin, mit der IF-ELSE-Anweisung zu prüfen, ob die ID in Tabelle2 vorhanden ist, bevor Sie Folgendes einfügen:
<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>
Diese Methode erfordert jedoch das Schreiben mehrerer INSERT INTO-SELECT-Anweisungen basierend auf Bedingungen. Auf der Suche nach einer effizienteren Lösung prüfen wir drei Alternativen:
1. Verwenden Sie NOT EXISTS
<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. Verwenden Sie NOT IN
<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. Verwenden Sie 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>
Von diesen drei Methoden ist die LEFT JOIN/IS NULL-Methode weniger effizient als die anderen Methoden. Zum Einfügen von Daten in die INSERT INTO SELECT-Abfrage von SQL Server unter Vermeidung von Duplikaten bieten die Techniken NOT EXISTS und NOT IN die beste Leistung.
Das obige ist der detaillierte Inhalt vonWie kann man Duplikate bei der Verwendung von INSERT INTO SELECT in SQL Server effizient vermeiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!