gpt4 book ai didi

MySQL,通过连接表与 in 子句连接

转载 作者:行者123 更新时间:2023-12-04 08:06:46 24 4
gpt4 key购买 nike

有什么办法可以连接两个表并得到group_concat ?
我有两张 table ,第一个是 idname有以下数据:


ID
姓名


1
约翰

2
标记

3
海伦

4
西蒙


以及包含以下数据的第二个表:


ID

团队
数量


1

2,4
100.00

2

1,4
80.00

3
星期五
2,3
150.00

4
太阳
1,3,4
120.00

5

3
40.00

team字段在逗号分隔的字符串中具有成员 ID。
如何连接名称,在一列中用逗号分隔?
要求的结果:


ID

团队
数量


1

马克,西蒙
100.00

2

约翰,西蒙
80.00

3
星期五
马克,海伦
150.00

4
太阳
约翰、海伦、西蒙
120.00

5

贺兰
40.00


我试过 group_concat像下面的代码,但它不起作用:

select b.*, (select group_concat(a.name separeted ',')
from a where a.id in (b.team)) as teamname from b
有什么建议?
在此先感谢您的帮助。

最佳答案

使用 FIND_IN_SET而不是 IN

CREATE TABLE a
(`id` int, `name` varchar(5))
;

INSERT INTO a
(`id`, `name`)
VALUES
(1, 'John'),
(2, 'Mark'),
(3, 'Helen'),
(4, 'Simon')
;


CREATE TABLE b
(`id` int, `day` varchar(3), `team` varchar(5), `amount` int)
;

INSERT INTO b
(`id`, `day`, `team`, `amount`)
VALUES
(1, 'mon', '2,4', 100.00),
(2, 'mon', '1,4', 80.00),
(3, 'fri', '2,3', 150.00),
(4, 'sun', '1,3,4', 120.00),
(5, 'wen', '3', 40.00)
;


select 
b.*
, (select group_concat(a.name )
from a
where FIND_IN_SET(a.id, b.team) > 0) as teamname
from b
id | day | team  | amount | teamname        -: | :-- | :---- | -----: | :--------------- 1 | mon | 2,4   |    100 | Mark,Simon       2 | mon | 1,4   |     80 | John,Simon       3 | fri | 2,3   |    150 | Mark,Helen       4 | sun | 1,3,4 |    120 | John,Helen,Simon 5 | wen | 3     |     40 | Helen           

分贝<> fiddle here

关于MySQL,通过连接表与 in 子句连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66190209/

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