mysql中的记录分隔符,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 ),...

标签:mysql,join,sql

来源: https://codeday.me/bug/20190620/1248049.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值