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
Libérer: 2025-01-13 11:21:43
original
981 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal