我有三张桌子tag
, page
, pagetag
有了下面的数据
page
ID NAME
1 page 1
2 page 2
3 page 3
4 page 4
tag
ID NAME
1 tag 1
2 tag 2
3 tag 3
4 tag 4
pagetag
ID PAGEID TAGID
1 2 1
2 2 3
3 3 4
4 1 1
5 1 2
6 1 3
我想在单个查询中使用 SQL 获取一个字符串,其中包含每个页面的相应标签名称。这是我想要的输出。
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
这可以用 SQL 实现吗?
我正在使用MySQL。尽管如此,如果可能的话,我希望有一个独立于数据库供应商的解决方案。
塞尔吉奥·德尔·阿莫:
但是,我没有得到没有标签的页面。我想我需要用左外连接编写查询。
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;
不是一个非常漂亮的查询,但应该给你你想要的 -pagetag.id
and group_concat(tag.name)
将null
对于您上面发布的示例中的第 4 页,但该页面应出现在结果中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)