gpt4 book ai didi

sql - 获取所有带有标签的 GROUP_CONCAT 字段的文章

转载 作者:可可西里 更新时间:2023-11-01 08:00:56 25 4
gpt4 key购买 nike

我有一张 table articles , 另一个 tags ,第三个叫article_tags .我想生成一个页面,列出特定标签的所有文章。

我的查询是这样的:

SELECT headline, GROUP_CONCAT(tags.tag_name) AS all_tags FROM articles<br/>
LEFT JOIN articles_tags ON articles.article_id = articles_tags.article_id<br/>
LEFT JOIN tags ON articles_tags.tag_id = tags.tag_id<br/>
WHERE tags.tag_name = 'japan'<br/>
GROUP BY articles.article_id

所有返回的文章只有japan作为标签,即使相关文章有多个标签。

这显然与WHERE有关子句,但我不知道如何在这里做我想做的事——理想情况下,我最终会得到一个像 japan,china,korea 这样的列表。反而。这是子查询的地方吗?可以请 SQL 专家提供建议。

谢谢,马特

最佳答案

您至少可以使用两种方法。一种方法是两次加入表格。您指出的另一个是使用子查询。为了简单和便于阅读,我可能会在这里使用子查询。结果查询看起来像这样:

SELECT
headline,
GROUP_CONCAT(tags.tag_name) AS all_tags
FROM articles
JOIN articles_tags ON articles.article_id = articles_tags.article_id
JOIN tags ON articles_tags.tag_id = tags.tag_id
WHERE articles.article_id IN (
SELECT articles.article_id
FROM articles
JOIN articles_tags ON articles.article_id = articles_tags.article_id
JOIN tags ON articles_tags.tag_id = tags.tag_id
WHERE tags.tag_name = 'japan'
)
GROUP BY articles.article_id

下面是使用更多 JOIN 的方法:

SELECT
a.headline,
GROUP_CONCAT(t2.tag_name) AS all_tags
FROM articles a
JOIN articles_tags at1 ON a.article_id = at1.article_id
JOIN tags t1 ON at1.tag_id = t1.tag_id AND t1.tag_name = 'tag1'
JOIN articles_tags at2 ON a.article_id = at2.article_id
JOIN tags t2 ON at2.tag_id = t2.tag_id
GROUP BY a.article_id;

关于sql - 获取所有带有标签的 GROUP_CONCAT 字段的文章,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3579138/

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