Mysql
 sql >> Database >  >> RDS >> Mysql

mysql unisce due tabelle con ID separati da virgole

Puoi usare FIND_IN_SET() e GROUP_CONCAT() su questo,

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

USCITA

╔══════════╦═════════════════╗
║ GROUP_ID ║      NAME       ║
╠══════════╬═════════════════╣
║ 1        ║ Person1         ║
║ 2,3      ║ Person2,Person3 ║
╚══════════╩═════════════════╝

Come nota a margine, questa query potrebbe non funzionare in modo efficiente come previsto. Si prega di normalizzare correttamente la tabella non salvando i valori separati da una virgola.

AGGIORNAMENTO

GROUP_ID è abbastanza confuso. Non è PersonIDList ? Ad ogni modo, ecco il mio schema di progettazione suggerito:

Tabella PERSON

  • ID persona (PK)
  • Nome Persona
  • altre colonne..

Tabella GRUPPI

  • ID gruppo (PK)
  • Nome gruppo
  • altre colonne..

Tabella PERSON_GROUP

  • PersonID (FK) (contemporaneamente PK con la colonna GroupID)
  • ID gruppo (FK)