作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
假设我的 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 tables and display records as comma separated string in a single row,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12275239/
我是一名优秀的程序员,十分优秀!