使用SQL将多个字段连接成一个字段

Ser*_*Amo 5 mysql sql

我有三个表tag,page,pagetag

有了下面的数据

ID      NAME
1       page 1
2       page 2
3       page 3
4       page 4
Run Code Online (Sandbox Code Playgroud)

标签

ID      NAME
1       tag 1
2       tag 2
3       tag 3
4       tag 4
Run Code Online (Sandbox Code Playgroud)

pagetag

ID   PAGEID  TAGID
1    2        1
2    2        3
3    3        4
4    1        1
5    1        2
6    1        3
Run Code Online (Sandbox Code Playgroud)

我想在单个查询中获取一个字符串,其中包含每个页面的对应标记名称.这是我想要的输出.

ID      NAME       TAGS
1       page 1     tag 1, tag 2, tag 3
2       page 2     tag 1, tag 3
3       page 3     tag 4
4       page 4    
Run Code Online (Sandbox Code Playgroud)

这可能与SQL有关吗?


我正在使用MySQL.尽管如此,如果可能,我想要一个独立于数据库供应商的解决方案.

Con*_*oyP 3

塞尔吉奥·德尔·阿莫:

但是,我没有得到没有标签的页面。我想我需要用左外连接编写查询。

SELECT pagetag.id, page.name, group_concat(tag.name)
FROM
(
    page LEFT JOIN pagetag ON page.id = pagetag.pageid
)
LEFT JOIN tag ON pagetag.tagid = tag.id
GROUP BY page.id;
Run Code Online (Sandbox Code Playgroud)

这不是一个非常漂亮的查询,但应该给您您想要的内容 -pagetag.id并且group_concat(tag.name)null针对您上面发布的示例中的第 4 页,但该页面应出现在结果中。