Maison > base de données > tutoriel mysql > Comment supprimer efficacement les lignes en double dans T-SQL en fonction des colonnes clés ?

Comment supprimer efficacement les lignes en double dans T-SQL en fonction des colonnes clés ?

Barbara Streisand
Libérer: 2025-01-15 16:10:43
original
317 Les gens l'ont consulté

How to Efficiently Delete Duplicate Rows in T-SQL Based on Key Columns?

Supprimez efficacement les lignes en double dans T-SQL en fonction des colonnes de clé primaire

Question :

En raison d'une erreur lors de la création des données, le tableau contient un grand nombre de lignes en double. L'objectif est d'éliminer les lignes redondantes tout en conservant une ligne pour chaque combinaison unique de colonnes de clé primaire. Cependant, le tableau contient certaines colonnes qui ne sont pas pertinentes pour la question et contiennent des données légèrement différentes et doivent être ignorées.

Solution :

Pour SQL Server 2005 et versions ultérieures, vous pouvez utiliser la fonction OVER() et les expressions de table communes (CTE) pour supprimer efficacement les lignes en double.

Instructions CTE et DELETE :

<code class="language-sql">WITH cte AS (
  SELECT [foo], [bar], 
     row_number() OVER(PARTITION BY foo, bar ORDER BY baz) AS [rn]
  FROM TABLE
)
DELETE cte WHERE [rn] > 1</code>
Copier après la connexion

Instructions :

  • CTE crée un sous-ensemble trié de lignes basé sur les colonnes foo et bar.
  • La clause ORDER BY baz est facultative et permet de trier au sein de chaque partition (groupe de colonnes de clé primaire).
  • L'instruction DELETE supprime toutes les lignes du CTE avec un rang supérieur à 1, éliminant ainsi efficacement les doublons tout en conservant une ligne pour chaque combinaison de colonnes de clé primaire.

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