gpt4 book ai didi

SQL查找带有所有标签集的文章

转载 作者:行者123 更新时间:2023-12-04 14:23:53 28 4
gpt4 key购买 nike

查找带有一组标签中任何一个的文章是一个相对简单的联接,并且已经讨论过:Best DB (MySQL) structure: Articles which contain favored tags

但是,如果我正在搜索,并且想要查找带有所有标签集的文章该怎么办?

为具体起见,假定下表:

CREATE TABLE `articles` (
`id` INT NOT NULL
);

CREATE TABLE `applied_tags` (
`tag_id` INT NOT NULL,
`article_id` INT NOT NULL
);

CREATE TABLE `search_tags` (
`search_id` INT NOT NULL,
`tag_id` TAG NOT NULL
);

我想出了这个方法,我认为它可能会起作用,但是它很大,很丑陋,还不清楚,所以我认为必须有更好的方法:
Select articles.id from articles
where
( select count(*) from applied_tags
where applied_tags.article_id == articles.id
and applied_tags.tag_id in (select search_tags.tag_id from search_tags where search_tags.search_id == <input>)
==
(select count(*) from search_tags where search_tags.search_id == <input>)

(本质上,请计算相关标签的数量是否为期望值。)

最佳答案

select article_id
from applied_tags
where tag_id in (<input tag set here>)
group by article_id
having count(*) = <count of input tags>

这应该做。我不会发誓这是最有效的方法,但是假设tag_id + article_id是Applied_tags的主键,它会做您想要的。如果不是这样(即您可以有重复的标签),则所有投注均关闭。

关于SQL查找带有所有标签集的文章,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1400451/

28 4 0