我有两张桌子
表格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)
有一个查询,我可以实现这一点.非常感谢您的帮助.谢谢.
你可以使用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吗?无论如何,这是我建议的架构设计:
人表
GROUP表
PERSON_GROUP表