Du kan använda FIND_IN_SET()
och GROUP_CONCAT()
på detta,
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
OUTPUT
╔══════════╦═════════════════╗
║ GROUP_ID ║ NAME ║
╠══════════╬═════════════════╣
║ 1 ║ Person1 ║
║ 2,3 ║ Person2,Person3 ║
╚══════════╩═════════════════╝
Som en anmärkning kanske den här frågan inte fungerar effektivt som förväntat. Normalisera din tabell ordentligt genom att inte spara värden separerade med kommatecken.
UPPDATERA
GROUP_ID
är ganska förvirrande. Är det inte PersonIDList
? Hur som helst, här är min föreslagna schemadesign:
PERSON-tabell
- PersonID (PK)
- Personnamn
- andra kolumner...
GRUPPtabell
- Grupp-ID (PK)
- Gruppnamn
- andra kolumner...
PERSON_GROUP Tabell
- PersonID (FK) (samtidigt PK med kolumn GroupID)
- Grupp-ID (FK)