MySQL查询:在一行中以逗号分隔的字符串连接表和显示记录

假设我的MySQL数据库中有以下两个表:

Table 1:: EMP: EmpID, EmpName
eg. (1, 'John'), (2,'Alex'),(3,'Tom')

Table 2:: Team: TeamID, ManagerID, MemberID
eg. record1: (Team1, 1, 2), record2: (Team1, 1, 3) 

所以有一个团队有id team1,John是经理,Alex和Tom是其成员.

我想以下列方式在屏幕上显示Team表的记录

| Team  | Manager | Members   |
| team1 | John    | Alex, Tom |

什么是SQL查询,它将加入上述两个表,并在基于memberID时返回成员的名称.

此外,结果将显示为包含由逗号分隔的所有团队成员的1行.

如果有更好的方法来设计这两个表,那么请同样建议.非常感谢.

谢谢.

最佳答案
我认为你需要使用GROUP_CONCAT. GROUP_CONCAT()函数用于将列值连接成一个字符串.如果您以其他方式执行多行的查找,然后在客户端连接它们,这将非常有用.

SELECT  b.TeamID as TeamName, 
        a.EmpName as Manager,
        GROUP_CONCAT(c.EmpName) Members
FROM    Emp a
            INNER JOIN Team b
                ON a.EmpID = b.ManagerID
            INNER JOIN  Emp c
                ON b.MemberID = c.EmpID
GROUP BY b.TeamID, a.EmpName

您还可以更改分隔符和排序

GROUP_CONCAT( c.EmpName SEPARATOR '-' ),...
GROUP_CONCAT( c.EmpName ORDER BY c.EmpName DESC ),...

SQLFiddle Demo

转载注明原文:MySQL查询:在一行中以逗号分隔的字符串连接表和显示记录 - 代码日志