Você pode usar
FIND_IN_SET()
e GROUP_CONCAT()
nisto, 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
SAÍDA
╔══════════╦═════════════════╗
║ GROUP_ID ║ NAME ║
╠══════════╬═════════════════╣
║ 1 ║ Person1 ║
║ 2,3 ║ Person2,Person3 ║
╚══════════╩═════════════════╝
Como uma nota lateral, essa consulta pode não funcionar com eficiência conforme o esperado. Por favor, normalize sua tabela corretamente, não salvando valores separados por uma vírgula.
ATUALIZAÇÃO
GROUP_ID
é bastante confuso. Não é PersonIDList
? De qualquer forma, aqui está meu projeto de esquema sugerido:Tabela PERSON
- ID da pessoa (PK)
- Nome da pessoa
- outras colunas..
Tabela de GRUPO
- ID do grupo (PK)
- Nome do grupo
- outras colunas..
Tabela PERSON_GROUP
- PersonID (FK) (ao mesmo tempo PK com a coluna GroupID)
- GrupoID (FK)