Maison > base de données > tutoriel mysql > Comment supprimer les e-mails en double tout en conservant les autres doublons de colonnes dans SQL ?

Comment supprimer les e-mails en double tout en conservant les autres doublons de colonnes dans SQL ?

Patricia Arquette
Libérer: 2025-01-02 16:32:39
original
561 Les gens l'ont consulté

How to Remove Duplicate Emails While Keeping Other Column Duplicates in SQL?

Élimination des doublons d'e-mails dans la requête SQL avec DISTINCT

Dans la requête SQL fournie, vous souhaitez la modifier pour renvoyer des entrées d'e-mail uniques tout en permettant doublons dans d’autres colonnes. Étant donné que DISTINCT et GROUP BY opèrent sur des lignes entières, une approche différente est nécessaire pour atteindre cet objectif.

La solution réside dans l'incorporation d'une sous-requête qui exploite la fonction ROW_NUMBER() de SQL Server. En partitionnant l'ensemble de données en fonction de l'e-mail et en le triant par ID décroissant à l'aide de la fonction ROW_NUMBER(), nous pouvons attribuer un classement unique à chaque ligne de chaque groupe d'e-mails.

La requête principale sélectionne ensuite toutes les lignes où le la valeur de classement (rn) est égale à 1, garantissant qu'une seule ligne pour chaque e-mail distinct est incluse dans les résultats.

Voici la valeur modifiée requête :

SELECT *
FROM (
    SELECT ID, Email, ProductName, ProductModel,
        ROW_NUMBER() OVER(PARTITION BY Email ORDER BY ID DESC) rn
    FROM Products
) a
WHERE rn = 1
Copier après la connexion

Cette requête élimine efficacement les e-mails en double tout en préservant les doublons dans d'autres colonnes. Vous pouvez affiner davantage la requête en ajoutant des filtres conditionnels à la sous-requête, comme illustré dans cet exemple :

SELECT *
FROM (
    SELECT ID, Email, ProductName, ProductModel,
        ROW_NUMBER() OVER(PARTITION BY Email ORDER BY ID DESC) rn
    FROM Products
    WHERE ProductModel = 2 AND ProductName LIKE 'CYBER%'
) a
WHERE rn = 1
Copier après la connexion

Cette requête modifiée limite les résultats aux produits avec un ProductModel de 2 et des noms commençant par « CYBER % ', en conservant les entrées d'e-mail non dupliquées selon ces critères.

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