Sie können FIND_IN_SET()
verwenden und GROUP_CONCAT()
dazu
SELECT b.Group_ID, GROUP_CONCAT(a.name) name
FROM Table2 b
INNER JOIN Table1 a
ON FIND_IN_SET(a.ID, b.Group_ID) > 0
GROUP BY b.Group_ID
AUSGABE
╔══════════╦═════════════════╗
║ GROUP_ID ║ NAME ║
╠══════════╬═════════════════╣
║ 1 ║ Person1 ║
║ 2,3 ║ Person2,Person3 ║
╚══════════╩═════════════════╝
Als Nebenbemerkung wird diese Abfrage möglicherweise nicht wie erwartet effizient ausgeführt. Bitte normalisieren Sie Ihre Tabelle richtig, indem Sie keine durch ein Komma getrennten Werte speichern.
AKTUALISIEREN
GROUP_ID
ist ziemlich verwirrend. Ist es nicht PersonIDList
? Wie auch immer, hier ist mein vorgeschlagenes Schema-Design:
PERSON-Tabelle
- PersonID (PK)
- Personenname
- andere Spalten..
GROUP-Tabelle
- Gruppen-ID (PK)
- Gruppenname
- andere Spalten..
PERSON_GROUP-Tabelle
- PersonID (FK) (zugleich PK mit Spalte GroupID)
- Gruppen-ID (FK)