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

mysql join to tabel med kommaseparerede id'er

Du kan bruge FIND_IN_SET() og GROUP_CONCAT() på dette,

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
 

OUTPUT

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

Som en sidenote fungerer denne forespørgsel muligvis ikke effektivt som forventet. Normaliser venligst din tabel korrekt ved ikke at gemme værdier adskilt af et komma.

OPDATERING

GROUP_ID er ret meget forvirrende. Er det ikke PersonIDList ? Uanset hvad, her er mit foreslåede skemadesign:

PERSON-tabel

  • Person-ID (PK)
  • Personnavn
  • andre kolonner..

GRUPPETabel

  • Gruppe-ID (PK)
  • Gruppenavn
  • andre kolonner..

PERSON_GROUP-tabel

  • PersonID (FK) (samtidig PK med kolonne GroupID)
  • Gruppe-ID (FK)


  1. MySQL - Tæller to ting med forskellige betingelser

  2. Skjult ydeevne og håndteringsforbedringer i SQL Server 2012/2014

  3. Sådan importeres en enkelt tabel til mysql-databasen ved hjælp af kommandolinjen

  4. MySQL tillader ikke brugerlogin:Fejl 1524