sql >> Databasteknik >  >> RDS >> Mysql

mysql sammanfoga två tabeller med kommaseparerade ID

Du kan använda FIND_IN_SET() och GROUP_CONCAT() på detta,

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 anmärkning kanske den här frågan inte fungerar effektivt som förväntat. Normalisera din tabell ordentligt genom att inte spara värden separerade med kommatecken.

UPPDATERA

GROUP_ID är ganska förvirrande. Är det inte PersonIDList ? Hur som helst, här är min föreslagna schemadesign:

PERSON-tabell

  • PersonID (PK)
  • Personnamn
  • andra kolumner...

GRUPPtabell

  • Grupp-ID (PK)
  • Gruppnamn
  • andra kolumner...

PERSON_GROUP Tabell

  • PersonID (FK) (samtidigt PK med kolumn GroupID)
  • Grupp-ID (FK)


  1. Hur vet man vad ett bra index är?

  2. Vad är Oracle Database?

  3. Motsvarande funktion för DATEADD() i Oracle

  4. Databasmodeller för e-handel Del 1:Nyhetsbrevet