Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

mysql junta duas tabelas com ids separados por vírgulas


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)