Mysql
 sql >> Datenbank >  >> RDS >> Mysql

mysql Join zwei Tabellen mit kommagetrennten IDs

Sie können FIND_IN_SET() verwenden und GROUP_CONCAT() dazu

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

AUSGABE

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

Als Nebenbemerkung wird diese Abfrage möglicherweise nicht wie erwartet effizient ausgeführt. Bitte normalisieren Sie Ihre Tabelle richtig, indem Sie keine durch ein Komma getrennten Werte speichern.

AKTUALISIEREN

GROUP_ID ist ziemlich verwirrend. Ist es nicht PersonIDList ? Wie auch immer, hier ist mein vorgeschlagenes Schema-Design:

PERSON-Tabelle

  • PersonID (PK)
  • Personenname
  • andere Spalten..

GROUP-Tabelle

  • Gruppen-ID (PK)
  • Gruppenname
  • andere Spalten..

PERSON_GROUP-Tabelle

  • PersonID (FK) (zugleich PK mit Spalte GroupID)
  • Gruppen-ID (FK)