2010-12-15 2 views
0

Comment puis-je écrire une requête pour lister les entrées en double dans une base de données de la même catégorie. Les doublons ont la même valeur dans la colonne "nom". Je dois énumérer seulement les copies dans la même catégorie ainsi je peux alors supprimer le double.Comment lister les entrées en double dans la base de données

J'utilise cet exemple d'une recherche

SELECT email FROM tableName GROUP BY email HAVING count(email) > 1 

qui fonctionne pour obtenir des doublons mais il obtient tous les doublons, comment puis-je réécrire pour obtenir les doublons dans les mêmes catégories. Dans l'exemple ci-dessus, si j'ai un email qui existe dans le chat 1 et le chat 4, il sera affiché comme doublon, ce qui n'est pas le cas. Il devrait seulement lister les doublons si l'email existe deux fois ou plus dans le chat 1, ou deux fois et plus dans le chat 4 et ainsi de suite.

Merci.

+0

Qu'est-ce qu'une catégorie? est-ce une autre colonne dans le tableau? – jaydel

+0

Oui c'est une autre colonne (cid) – bradg

+0

Cela aiderait si vous montriez le CREATE TABLE, – Riedsio

Répondre

2

Vous pouvez ajouter plusieurs colonnes à un groupe. C'EST À DIRE.

SELECT email, category from tableName GROUP BY email, category HAVING count(email) > 1 

Cela montrera l'e-mail et par catégorie que si l'e-mail et par catégorie sont à la fois en double (même courriel deux fois I.E. avec la même catégorie).

0

Ajouter la catégorie au groupe par.

SELECT email FROM tableName GROUP BY email, category HAVING count(email) > 1 

La seule chose qui cloche avec ceci est que vous ne serez pas en mesure de dire dans quelle catégorie le duplicata est à moins que vous SELECT sur elle aussi.

+0

Merci. Je n'ai vraiment pas besoin de savoir de quelle catégorie il vient, je vais également sélectionner l'unique (id) que je peux ensuite utiliser pour supprimer. – bradg

Questions connexes