Heim > Datenbank > MySQL-Tutorial > Wie kann man Duplikate bei der Verwendung von INSERT INTO SELECT in SQL Server effizient vermeiden?

Wie kann man Duplikate bei der Verwendung von INSERT INTO SELECT in SQL Server effizient vermeiden?

Linda Hamilton
Freigeben: 2025-01-13 11:21:43
Original
988 Leute haben es durchsucht

How to Efficiently Avoid Duplicates When Using INSERT INTO SELECT in SQL Server?

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage