sql >> Databáze >  >> RDS >> Mysql

mysql spojí dvě tabulky s ID oddělenými čárkami

Můžete použít FIND_IN_SET() a GROUP_CONCAT() na tomto,

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

VÝSTUP

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

Jako vedlejší poznámka, tento dotaz nemusí fungovat efektivně, jak se očekávalo. Proveďte prosím správnou normalizaci tabulky tím, že neukládejte hodnoty oddělené čárkou.

AKTUALIZACE

GROUP_ID je dost matoucí. Není to PersonIDList? ? Každopádně zde je můj navrhovaný návrh schématu:

Tabulka PERSON

  • ID osoby (PK)
  • Jméno osoby
  • další sloupce..

Tabulka GROUP

  • ID skupiny (PK)
  • Název skupiny
  • další sloupce..

Tabulka PERSON_GROUP

  • ID osoby (FK) (současně PK se sloupcem GroupID)
  • ID skupiny (FK)


  1. Jak vypočítat dny mezi dvěma daty v PHP?

  2. Jak používat poznámky Hibernate k přidání indexu do Lob / Clob / tinyblob

  3. Proaktivní kontroly stavu serveru SQL Server, část 3:Nastavení instance a databáze

  4. Funkce LEAST() v Oracle