2010-12-15 16 views
0

Wie kann ich eine Abfrage schreiben, doppelte Einträge in einer Datenbank aus der gleichen Kategorie aufzulisten. Die Duplikate haben in der Spalte "Name" den gleichen Wert. Ich muss nur die Duplikate in derselben Kategorie auflisten, damit ich das Duplikat löschen kann.Wie listet doppelte Einträge in der Datenbank auf

Ich bin mit diesem Beispiel aus einer Suche

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

Das ist für immer Duplikate funktioniert, aber es erhält alle Duplikate, wie kann ich es neu schreiben die Duplikate aus den gleichen Kategorien zu erhalten. In dem obigen Beispiel, wenn ich eine E-Mail habe, die in der Katze 1 und Katze 4 existiert, wird es als Duplikat angezeigt, was nicht der Fall ist. Es sollte nur Duplikate auflisten, wenn die E-Mail zweimal oder öfter in Kat 1 oder doppelt und mehr in Kat 4 existiert.

Danke.

+0

Was ist Kategorie? Ist es eine andere Spalte in der Tabelle? – jaydel

+0

Ja, es ist eine andere Spalte (cid) – bradg

+0

Es würde helfen, wenn Sie die CREATE TABLE, – Riedsio

Antwort

2

Sie können mehr als eine Spalte zu einer Gruppe hinzufügen. I.E.

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

, dass die E-Mail und Kategorie zeigt nur, wenn die E-Mail und Kategorie ist beide duplizieren (I.E. gleiche E-Mail zweimal mit gleicher Kategorie).

0

Fügen Sie die Kategorie der Gruppe hinzu.

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

Das einzige, was falsch mit dieser ist, dass Sie nicht in der Lage sein zu sagen, in welcher Kategorie das Duplikat ist in, wenn Sie SELECT auf mich als gut.

+0

Danke gezeigt. Ich muss wirklich nicht wissen, aus welcher Kategorie es stammt, ich werde auch die eindeutige (ID) auswählen, die ich dann zum Löschen verwenden kann. – bradg

Verwandte Themen