it-swarm.com.de

Wählen Sie nur die Datensätze aus, die unterschiedliche / mehrere Werte für eine bestimmte Spalte haben

Unten finden Sie ein Beispiel für meine Mitgliedschaftstabelle. Es gibt einige Datensätze mit mehreren Werten im E-Mail-Feld. Ich möchte nur die Datensätze auswählen, die mehrere E-Mail-Werte haben:

Mitgliedertabelle

ID   LASTNAME    FIRSTNAME    EMAIL
567  Jones       Carol        [email protected]
567  Jones       Carol        [email protected]
678  Black       Ted          [email protected]
908  Roberts     Cole         [email protected]
908  Roberts     Cole         [email protected]
908  Roberts     Cole         [email protected]

Ich möchte, dass das Ergebnis lautet:

567  Jones       Carol        [email protected]
567  Jones       Carol        [email protected]
908  Roberts     Cole         [email protected]
908  Roberts     Cole         [email protected]
908  Roberts     Cole         [email protected]

Beachten Sie, dass Ted Black fehlt, da er nur einen Eintrag für die E-Mail-Adresse hat.

Ich sollte klarstellen, dass meine Mitgliedschaftstabelle mehr als 4 Spalten enthält. Es gibt zusätzliche Spalten für Telefon und Adresse usw. Und es kann mehrere Einträge für ein Mitglied geben, da es mehr als eine Telefonnummer oder Adresse hat. Ich möchte nur Personen erfassen, die mehrere E-Mail-Adressen haben.

Dies ist Teil einer Datenbankbereinigung und ein Primärschlüssel wird hinzugefügt. Ich sollte weiter klarstellen, dass einige Personen mehrere Einträge mit derselben E-Mail-Adresse haben könnten. In dieser Phase möchte ich nicht mehrere Einträge mit derselben E-Mail-Adresse erfassen, sondern nur diejenigen, die mehrere Einträge mit unterschiedlicher E-Mail-Adresse haben.

11
AlGator

Sie könnten so etwas tun wie:

select distinct x.id, x.lastname, x.firstname, x.email
from t as x
join (
    select id
    from t
    group by id
    having count(distinct email) > 1
) as y
    on x.id = y.Id    
8
Lennart
select x.* 
from member as x
where x.id IN

    (
    select id
    from member
    group by id
    having count(distinct email) > 1
    )
3
Victor111