当前位置: 首页 > 面试题库 >

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

尹晟
2023-03-14
问题内容

查找带有一组标签中任何一个的文章是一个相对简单的联接,并且已经讨论过:最佳数据库(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
);

我想出了这个方法,我认为这可能会起作用,但是它非常庞大,丑陋且不清楚,因此我认为必须有更好的方法:

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 (set="" tag="" />)
group by article_id
having count(*) =


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



 类似资料:
  • 问题内容: 假设我有以下表格: 标签 id:整数 名称:字符串 帖子 id:整数 正文:文本 标记 id:整数 tag_id:整数 post_id:整数 我将如何编写一个查询来选择所有带有以下所有标记(标记表的名称属性)的标记的查询:“奶酪”,“葡萄酒”,“巴黎”,“宽限期”,“城市”,“风景区”,“艺术” 另请参阅:需要有关SQL查询的帮助以查找带有大多数指定标签的内容(注意:相似,但不能重复!

  • 问题内容: 我正在考虑一个应用程序的设计,该应用程序的主要功能围绕着找到所有给定集合的子集的集合的能力而展开。 例如,给定输入集A = {1,2,3 … 50}和集合集B = {B1 = {3,5,9,12},B2 = {1,6,100,123,45}。 .. B500 = {8,67,450}},返回所有属于A子集的B。 我想它与搜索引擎类似,除了我并没有设置A小而B大的奢侈。在我的情况下,B通

  • 问题内容: 考虑这样的一张桌子 问题是,如果我给定值2和5,我应该得到102和105,而102和105都同时具有值​​2和5,或者如果我给定值1和3,我应该得到100和104。 我如何仅用一个sql命令就能做到这一点?我需要一个尽可能轻的查询。 并使用UNION,INTERSECTION或NESTED SQL,哪个更快,更慢,更重? 在此先感谢Ergec 问题答案: 有很多解决方案。除了Jhonn

  • 问题内容: 我有以下html(用标记的换行符): 如何查找 我 要查找的 文本 ?下面的代码返回第一个发现的值,因此我需要以某种方式按 固定文本 进行过滤。 更新 。如果我使用以下代码: 然后它只返回 固定文本: 。 问题答案: 您可以将正则表达式传递给的text参数,如下所示:

  • 我想得到一个列表的所有标签与属性(但不是或任何其他)使用Python从以下XML: 我尝试过使用,但结果也包括标记。到目前为止,我尝试的所有其他变体都失败了。 我正在使用的实际Python代码: 输出: 更新: 我发现这是一个命名空间问题,这使得这个问题重复。问题是我有一个根节点看起来像这样:

  • 您能建议如何在Spring Data JPA存储库中编写查询吗?情况是这样的:我有两个实体:客户和产品,关系为“OneToMany”——意味着一个客户可能有多个产品。在代码中,看起来客户实体已经设置了产品,产品引用了客户,非常简单。如果我从DB JSON中检索Customer,将如下所示: 问题是,我如何向DB写入查询,以查找其产品与通过产品集合的产品匹配的所有客户?例如,我想找到所有拥有type