SQL-Abfrage, um alle Zeilen mit doppelten Werten, aber sind nicht Teil der gleichen Gruppe
Das Datenbank-schema ist wie folgt organisiert:
ID | GroupID | VALUE
--------------------
1 | 1 | A
2 | 1 | A
3 | 2 | B
4 | 3 | B
In diesem Beispiel möchte ich, um alle Zeilen mit doppelten WERT, aber nicht Teil der gleichen Gruppe. So das gewünschte Ergebnis eingestellt werden sollte-IDs (3, 4), weil Sie nicht in der gleichen Gruppe (2, 3), aber immer noch den gleichen WERT haben (B).
Ich habe Probleme beim schreiben einer SQL-Abfrage und würde schätzen jede Beratung. Danke.
So weit, ich bin mit SQL Zählen, aber kann nicht herausfinden, was zu tun mit der GroupId.
SELECT *
FROM TABLE T
HAVING COUNT(T.VALUE) > 1
GROUP BY ID, GroupId, VALUE
Welche Datenbank-engine und version benutzt du?
InformationsquelleAutor Garrett | 2012-07-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die einfachste Methode ist dabei die Verwendung
EXISTS
:InformationsquelleAutor JNK
Hier ist eine Methode. Zunächst identifizieren Sie die Werte angezeigt, die in mehr als einer Gruppe und dann diese Informationen verwenden, finden Sie die richtigen Zeilen in der ursprünglichen Tabelle:
Eigentlich bevorzuge ich eine leichte Variante in diesem Fall, durch die änderung der HAVING-Klausel:
Dies funktioniert, wenn Sie sind auf der Suche nach mehr als einer Gruppe und sollte auch schneller sein als der COUNT DISTINCT-version.
InformationsquelleAutor Gordon Linoff
CARTESIAN
? Warum fügen Sie einen Unterstrich, um Ihre Tabellen-aliases?InformationsquelleAutor PaddyC