小编me2*_*e22的帖子

SQL查找包含所有标记集的文章

使用任何一组标签查找文章是一个相对简单的连接,并且已经讨论过:最佳数据库(MySQL)结构:包含偏好标签的文章

但是,如果我正在搜索,并希望找到包含所有标签的文章,该怎么办?

为了具体,请假设下表:

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
);
Run Code Online (Sandbox Code Playgroud)

我想出了这个,我觉得它可能会起作用,但它很庞大,丑陋,有点不清楚,所以我认为必须有一个更好的方法:

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>)
Run Code Online (Sandbox Code Playgroud)

(基本上,如果相关标签的数量是预期值,则进行计数.)

sql

5
推荐指数
1
解决办法
764
查看次数

标签 统计

sql ×1