gpt4 book ai didi

MySQL一对多加入Group By只返回一个观察

转载 作者:IT王子 更新时间:2023-10-28 23:45:53 26 4
gpt4 key购买 nike

我有一个评论表和一个标签表。对于每条评论,可能有多个标签,也可能没有。我想加入这两者,这样我就可以获得每个评论的标签列表。

评论表:

+---------+----------+---+
|CommentID| Title | ..|
+---------+----------+---+
| 1 | animals| |
| 2 | plants | |
+---------+----------+---+

标签表:

+---------+----------+---+
| TagID |CommentID | ..|
+---------+----------+---+
| 5 | 1 | |
| 6 | 1 | |
| 7 | 3 | |
+---------+----------+---+

因此,查询应返回标签,(5,6) 用于评论 ID == 1,而空数组则用于评论 ID == 2

这就是我所拥有的 - 它只选择最后一个 ID 而不是倍数:

SELECT c.CommentID, c.Title,  t.TagID  FROM Comment as c
LEFT OUTER JOIN Tag as t ON c.CommentID = t.CommentID
GROUP BY t.TagID

最佳答案

您可以使用 GROUP_CONCAT将多行中的数据转换为单个分隔字符串:

SELECT    a.CommentID, 
a.Title,
GROUP_CONCAT(b.TagID ORDER BY b.TagID) AS tags
FROM CommentTable a
LEFT JOIN TagTable b ON a.CommentID = b.CommentID
GROUP BY a.CommentID,
a.Title

在这种情况下,如果评论没有相应的标签,则该字段将为 NULL。


SQLFiddle Demo

关于MySQL一对多加入Group By只返回一个观察,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11807650/

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