假设我的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 ),...
标签:mysql,join,sql
来源: https://codeday.me/bug/20190620/1248049.html