Hallo,
» also nur in *einer* Spalte?
ja nur die Spalte "TextIdentifier" hat bei manchen Zeilen gleich Einträge.
» Nutze einen Join.
meinst du ein SelfJoin?
nein, nicht ganz:
Nehmen wir an, Deine Tabelle texttbl hätte folgenden Inhalt:
TextID English TextIdentifier
-----------------------------
123 blau blue
234 Super super
567 Doll super
789 Wow super
Nun liefert
SELECT
TextIdentifier
FROM
texttbl
GROUP BY
TextIdentifier
HAVING
COUNT(TextIdentifier) > 1
Dir als Ergebnismenge
TextIdentifier
--------------
super
Willst Du das von Dir anvisierte Ergebnis haben, so könntest Du einfach diese Abfrage mit der Tabelle selbst joinen:
SELECT
t1.TextID,
t1.English,
t1.TextIdentifier
FROM (
SELECT
t2.TextIdentifier
FROM
texttbl t2
GROUP BY
t2.TextIdentifier
HAVING
COUNT(t2.TextIdentifier) > 1
) q1
INNER JOIN
texttbl t1
ON
q1.TextIdentifier = t1.TextIdentifier
Genausogut könntest Du mit einer korrelierten Unterabfrage arbeiten:
SELECT -- Gib mir
t1.TextID, -- die gewünschten
t1.English, -- Spalten
t1.TextIdentifier --
FROM -- aus
texttbl t1 -- meiner Tabelle,
WHERE -- jedoch nur die Datensätze,
t1.TextIdentifier IN ( -- deren TextIdentifier in der
SELECT -- Liste
t2.TextIdentifier -- der TextIdentifier
FROM -- aus
texttbl t2 -- meiner Tabelle enthalten sind,
GROUP BY
t2.TextIdentifier
HAVING -- die
COUNT(t2.TextIdentifier) > 1 -- mehr als einmal vorkommen.
)
Könnte Dein Ergebnis, wie folgt aussehen:
IDs Werte TextIdentifier
--------------------------------------------------
234, 567, 789 Super, Doll, Wow super
wäre das viel einfacher, weil Du nur die Aggregatsfunktion GROUP_CONCAT benötigst:
SELECT
GROUP_CONCAT(TextID) IDs,
GROUP_CONCAT(English) Werte,
TextIdentifier
FROM
texttbl
GROUP BY
TextIdentifier
HAVING
COUNT(TextIdentifier) > 1
Freundliche Grüße
Vinzenz