gpt4 book ai didi

MySQL 查询 : Join tables and display records as comma separated string in a single row

转载 作者:可可西里 更新时间:2023-11-01 07:31:06 30 4
gpt4 key购买 nike

假设我的 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 查询 : Join tables and display records as comma separated string in a single row,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12275239/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com