T-SQL : effacez les lignes redondantes tout en conservant les enregistrements à une seule ligne
Le maintien de l'intégrité des données est essentiel, et l'élimination des lignes en double est une étape cruciale. Dans ce cas, des enregistrements en double se sont produits en raison d'une erreur de saisie de données. Votre objectif est d'éliminer ces lignes redondantes, mais vous devez être précis et vous assurer de conserver un seul doublon.
Solution : utilisez CTE et ROW_NUMBER()
Dans SQL 2005 ou version ultérieure, vous pouvez utiliser une expression de table commune (CTE) avec la clause ROW_NUMBER() OVER pour atteindre vos objectifs. Le CTE agit comme un filtre, isolant les données pertinentes, tandis que la fonction ROW_NUMBER() attribue un numéro de séquence à chaque ligne d'un groupe de partitions prédéfini (dans ce cas, la colonne clé).
Cette technique vous permet d'isoler les lignes en double en fonction des critères souhaités. En ajoutant une clause WHERE contenant une condition vérifiant si le numéro de ligne est supérieur à 1, vous pouvez identifier et supprimer les lignes redondantes.
Réussite
<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 FROM cte WHERE [rn] > 1</code>
Options de personnalisation
La clause ORDER BY du CTE offre une flexibilité dans le tri des lignes. Si votre objectif est de conserver les lignes les plus récentes, classez les résultats par ordre décroissant selon la colonne datetime appropriée (par exemple, ORDER BY [baz] DESC). Gardez à l'esprit que la sélection des critères de tri est entièrement personnalisable selon vos besoins spécifiques.
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!