Можете да използвате FIND_IN_SET()
и GROUP_CONCAT()
за това,
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
ИЗХОД
╔══════════╦═════════════════╗
║ GROUP_ID ║ NAME ║
╠══════════╬═════════════════╣
║ 1 ║ Person1 ║
║ 2,3 ║ Person2,Person3 ║
╚══════════╩═════════════════╝
Като странична бележка, тази заявка може да не работи ефективно, както се очаква. Моля, нормализирайте правилно таблицата си, като не записвате стойности, разделени със запетая.
АКТУАЛИЗИРАНЕ
GROUP_ID
е доста объркващо. Не е ли PersonIDList
? Както и да е, ето моят предложен дизайн на схема:
Маса за PERSON
- PersonID (PK)
- Име на лице
- други колони...
ГРУПОВА таблица
- GroupID (PK)
- Име на група
- други колони...
PERSON_GROUP Таблица
- PersonID (FK) (в същото време PK с колона GroupID)
- Идентификатор на групата (FK)