Methoden zur Vermeidung doppelter Daten in der SQL Server INSERT INTO SELECT-Anweisung
Bei Verwendung der INSERT INTO SELECT-Anweisung ist es wichtig, das doppelte Einfügen von Daten zu verhindern. In diesem Artikel werden mehrere effektive Möglichkeiten beschrieben, solche Probleme in SQL Server zu vermeiden, ohne bedingte Anweisungen wie IF-ELSE zu verwenden.
Methode 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>
Diese Abfrage verhindert doppelte Einfügungen, indem sie prüft, ob in TABLE_2 eine passende ID vorhanden ist. Wenn es bereits vorhanden ist, überspringen Sie diese Zeile.
Methode 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>
Ähnlich wie NOT EXISTS schließt die NOT IN-Klausel auch IDs aus, die bereits in TABLE_2 vorhanden sind. Es prüft, ob die ID in TABLE_1 in TABLE_2 vorhanden ist und fügt nur ein, wenn sie nicht vorhanden ist.
Methode 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>
Verwenden Sie LEFT JOIN und IS NULL, um die Zeilen, die eingefügt werden müssen, klarer zu identifizieren. Diese Abfrage wählt alle Zeilen in TABLE_1 aus und fügt sie ein, die keine passende ID in TABLE_2 haben.
Leistungsvergleich
In Bezug auf die Leistung ist LEFT JOIN/IS NULL im Allgemeinen nicht so effizient wie NOT EXISTS und NOT IN. Dies liegt daran, dass LEFT JOIN das Scannen von mehr Tabellen und Zeilen erfordert und mehr Ressourcen verbraucht. Für große Datenmengen empfiehlt sich die Verwendung von NOT EXISTS oder NOT IN.
Das obige ist der detaillierte Inhalt vonWie vermeide ich doppelte Zeilen in SQL Servers INSERT INTO SELECT ohne IF-ELSE-Anweisungen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!