Maison >base de données >tutoriel mysql >Comment éviter efficacement les doublons lors de l'utilisation de INSERT INTO SELECT dans SQL Server ?

Comment éviter efficacement les doublons lors de l'utilisation de INSERT INTO SELECT dans SQL Server ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-13 11:21:43988parcourir

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

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn