Maison > base de données > tutoriel mysql > Comment éviter les lignes en double dans INSERT INTO SELECT de SQL Server sans instructions IF-ELSE ?

Comment éviter les lignes en double dans INSERT INTO SELECT de SQL Server sans instructions IF-ELSE ?

Susan Sarandon
Libérer: 2025-01-13 10:58:43
original
427 Les gens l'ont consulté

How to Avoid Duplicate Rows in SQL Server's INSERT INTO SELECT Without IF-ELSE Statements?

Méthodes pour éviter les données en double dans l'instruction INSERT INTO SELECT de SQL Server

Lors de l'utilisation de l'instruction INSERT INTO SELECT, il est important d'éviter l'insertion de données en double. Cet article décrit plusieurs méthodes efficaces pour éviter de tels problèmes dans SQL Server sans utiliser d'instructions conditionnelles telles que IF-ELSE.

Méthode 1 : Utiliser NON 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

Cette requête empêche les insertions en double en vérifiant si un ID correspondant existe dans TABLE_2. S'il existe déjà, sautez cette ligne.

Méthode 2 : Utiliser 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>
Copier après la connexion

Semblable à NOT EXISTS, la clause NOT IN exclut également les ID qui existent déjà dans TABLE_2. Il vérifie si l'ID dans TABLE_1 est dans TABLE_2 et l'insère uniquement s'il n'est pas présent.

Méthode 3 : Utiliser 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

Utilisez LEFT JOIN et IS NULL pour identifier plus clairement les lignes qui doivent être insérées. Cette requête sélectionne et insère toutes les lignes de TABLE_1 qui n'ont pas d'ID correspondant dans TABLE_2.

Comparaison des performances

En termes de performances, LEFT JOIN/IS NULL n'est généralement pas aussi efficace que NOT EXISTS et NOT IN. En effet, LEFT JOIN nécessite d'analyser plus de tables et de lignes et consomme plus de ressources. Pour les ensembles de données volumineux, il est recommandé d’utiliser NOT EXISTS ou NOT IN.

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