sql >> Database >  >> RDS >> Mysql

mysql join two table met door komma's gescheiden id's

U kunt FIND_IN_SET() . gebruiken en GROUP_CONCAT() hierover,

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

UITGANG

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

Even terzijde:deze query werkt mogelijk niet efficiënt zoals verwacht. Normaliseer uw tabel alstublieft op de juiste manier door geen waarden op te slaan gescheiden door een komma.

UPDATE

GROUP_ID is nogal verwarrend. Is het niet PersonIDList ? Hoe dan ook, hier is mijn voorgestelde schemaontwerp:

PERSON-tabel

  • Persoons-ID (PK)
  • Persoonsnaam
  • andere kolommen..

GROEP-tabel

  • Groeps-ID (PK)
  • Groepsnaam
  • andere kolommen..

PERSON_GROUP Tabel

  • PersonID (FK) (tegelijk PK met kolom GroupID)
  • Groeps-ID (FK)


  1. MySQL-limietbereik

  2. Hoe geef je een unieke beperking aan een combinatie van kolommen in Oracle?

  3. Hoe auto_increment-waarden opnieuw te gebruiken?

  4. MySQL:fout in uw SQL-syntaxis ... in de buurt van sleutel ...?