Mysql
 sql >> база данни >  >> RDS >> Mysql

mysql свързва две таблици с идентификатори, разделени със запетая

Можете да използвате FIND_IN_SET() и GROUP_CONCAT() за това,

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

ИЗХОД

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

Като странична бележка, тази заявка може да не работи ефективно, както се очаква. Моля, нормализирайте правилно таблицата си, като не записвате стойности, разделени със запетая.

АКТУАЛИЗИРАНЕ

GROUP_ID е доста объркващо. Не е ли PersonIDList ? Както и да е, ето моят предложен дизайн на схема:

Маса за PERSON

  • PersonID (PK)
  • Име на лице
  • други колони...

ГРУПОВА таблица

  • GroupID (PK)
  • Име на група
  • други колони...

PERSON_GROUP Таблица

  • PersonID (FK) (в същото време PK с колона GroupID)
  • Идентификатор на групата (FK)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да променя MySQL таблица на UTF-8?

  2. PHP, MYSQL Autocomplete не работи

  3. Незаконен микс от съпоставяния за операция „concat“

  4. Посочване на mySQL ENUM в модел на Django

  5. SQL - Дайте ми 3 посещения само за всеки тип