L'instruction INSERT INTO SELECT dans SQL Server évite efficacement les données en double
Dans les opérations de base de données, l'insertion de données d'une table à une autre tout en évitant la duplication est une tâche courante. Cet article explique comment ajouter efficacement des enregistrements du tableau 1 au tableau 2 pour éviter la duplication d'ID.
Une solution consiste à utiliser l'instruction IF-ELSE pour vérifier si l'ID existe dans le tableau 2 avant de l'insérer :
<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>
Cependant, cette méthode nécessite d'écrire plusieurs instructions INSERT INTO-SELECT basées sur des conditions. A la recherche d'une solution plus efficace, nous explorons trois alternatives :
1. Utiliser NE PAS EXISTE
<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. Utiliser PAS DANS
<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. Utilisez 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>
Parmi ces trois méthodes, la méthode LEFT JOIN/IS NULL est moins efficace que les autres méthodes. Pour insérer des données dans la requête INSERT INTO SELECT de SQL Server tout en évitant la duplication, les techniques NOT EXISTS et NOT IN offrent les meilleures performances.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!