MySQL one-to-many join with Group By only returns one observation

前端 未结 3 1245
眼角桃花
眼角桃花 2021-01-02 03:05

I have a comment table and a tag table. For each comment, there could be multiple tags, or none. I want to join the two so I can get a list of tags for each comment.

<
3条回答
  •  情书的邮戳
    2021-01-02 03:50

    You can use GROUP_CONCAT to turn data in multiple rows into a single delimited string:

    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
    

    In this case, if a comment does not have a corresponding tag, the field would just be NULL.


    SQLFiddle Demo

提交回复
热议问题