gpt4 book ai didi

mysql - sql group_concat失败

转载 作者:太空宇宙 更新时间:2023-11-03 11:57:55 25 4
gpt4 key购买 nike

我与中间表有多对多关系:

table puppy          table color          table color_join (join table)

puppy_name | ID color | ID puppy_ID | color_ID
--------------- ----------- -------------------
a | 1 color1 | 1 1 | 1
b | 2 color2 | 2 1 | 2
color3 | 3 2 | 3
color4 | 4 2 | 4

ID 是主键,而 puppy_ID, color_ID 是外键。

我的查询是这样的:

SELECT p.name, c.color as color
FROM puppy p
JOIN color_join cj ON p.ID = cj.puppy_ID
JOIN color c ON c.ID = cj.color_ID

它返回这个:

puppy_name | color
------------------
a | 1
a | 2
b | 3
b | 4

我希望颜色像这样分组:

puppy_name | color
------------------
a | 1,2
b | 3,4

为此,我尝试了 group_concat(distinct c.color) 但是我只返回 1 行,颜色列包含所有颜色:

puppy_name | color
--------------------
a | 1,2,3,4

如果我在带有 group_concat(distinct c.color) 的查询中放置一个 where p.id = 1 子句,我仍然只得到一行,但是颜色他们的号码是正确的。

puppy_name | color
--------------------
a | 1,2

我怎样才能完成我想要的?

最佳答案

您需要按p.name 分组。

SELECT p.id, p.name, group_concat(distinct c.color) as colors
FROM puppy p
JOIN color_join cj ON p.ID = cj.puppy_ID
JOIN color c ON c.ID = cj.color_ID
GROUP BY p.id, p.name

当您分组时,group_concat 等聚合函数将应用于每个组,而不是整个记录集。

关于mysql - sql group_concat失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31207021/

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