mysql用逗号分隔的id连接两个表

use*_*377 6 mysql sql

我有两张桌子

表格1

ID     NAME
1      Person1
2      Person2
3      Person3
Run Code Online (Sandbox Code Playgroud)

表2

ID     GROUP_ID
1      1
2      2,3
Run Code Online (Sandbox Code Playgroud)

上面所有列中的ID引用相同的ID(示例 - 部门)

我的预期输出(通过加入两个表格)

GROUP_ID     NAME
1            Person1
2,3          Person2,Person3
Run Code Online (Sandbox Code Playgroud)

有一个查询,我可以实现这一点.非常感谢您的帮助.谢谢.

Joh*_*Woo 6

你可以使用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
Run Code Online (Sandbox Code Playgroud)

OUTPUT

??????????????????????????????
? GROUP_ID ?      NAME       ?
??????????????????????????????
? 1        ? Person1         ?
? 2,3      ? Person2,Person3 ?
??????????????????????????????
Run Code Online (Sandbox Code Playgroud)

作为旁注,此查询可能无法按预期有效执行.请不要保存以逗号分隔的值,以正确规范您的表格.

UPDATE

GROUP_ID非常令人困惑.不是PersonIDList吗?无论如何,这是我建议的架构设计:

人表

  • PersonID(PK)
  • PERSONNAME
  • 其他栏目..

GROUP表

  • GroupID(PK)
  • 团队名字
  • 其他栏目..

PERSON_GROUP表

  • PersonID(FK)(同时具有列GroupID的PK)
  • GroupID(FK)

  • 感谢您的回答和建议。以前开发这个小软件的开发人员弄乱了表结构。但我肯定会考虑标准化表格。再次感谢。 (2认同)