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

SQL仅选择存在确切多个关系的行

金飞翼
2023-03-14
问题内容

这与这个问题密切相关,但是增加了另一个要求。

给定父表“ parent”

╔════════════╦════════╗
║ PARENT_ID  ║ NAME   ║
╠════════════╬════════╣
║         1  ║ bob    ║
║         2  ║ carol  ║
║         3  ║ stew   ║
╚════════════╩════════╝

以及父表与(此处未指定)属性表之间的多对多关系表“ rel”

╔════════════╦══════════╗
║ PARENT_ID  ║ PROP_ID  ║
╠════════════╬══════════╣
║         1  ║       5  ║
║         1  ║       1  ║
║         2  ║       5  ║
║         2  ║       4  ║
║         2  ║       1  ║
║         3  ║       1  ║
║         3  ║       3  ║
╚════════════╩══════════╝

我该如何选择具有 全部只有 一组特定关系的所有父母?例如,通过样本数据,我如何找到与属性5和1完全相关的所有父母?


问题答案:
SELECT PARENT_ID
FROM rel
GROUP BY PARENT_ID
HAVING SUM(PROP_ID NOT IN (5,1)) = 0
AND SUM(PROP_ID = 1) = 1 
AND SUM(PROP_ID = 5) = 1


 类似资料:
  • 问题内容: 假设我有一张桌子: 这将返回自特定日期以来销售数量的产品清单。有没有一种方法不仅可以选择这个和,而且还可以选择没有where条件的和?我想查看每种产品自特定日期以来的销售情况以及所有(没有日期限制)的销售情况。 问题答案:

  • 我认为这不会太复杂而无法解释,但肯定会很复杂,无法让它发挥作用。 首先,我有两个关于用户评论的表格,每个部分(论坛、文章等)一个表格,如下所示: site_用户(id、用户名等)[保存用户信息的表] site_articles_comments(id,user_id,注释,...)[其中user_id=site_users.id] site_forum_comments(id,user_id,注释

  • 问题内容: 我有以下表格(仅列出必需的属性) 药品(身份证,姓名), 通用(ID,名称), med_gen(med_id引用医学(id),gen_id引用一般(id),效力) 样本数据 药物 (1,“ Crocin”) (2,“ Stamlo”) (3,’NT Kuf’) 通用的 (1,“六氯丁啶”) (2,’苯甲酸甲酯’) med_gen (1,1,‘100mg’) (1、2,“ 50毫升”)

  • 问题内容: 我得到了一个带有自动公司常规设置的桌子。ID。一些行已被删除,因此ID列表可能如下所示: (1,2,3,5,8,…) 然后,从另一个来源( 编辑:另一个来源=数据库中不存在 ),我得到了这个数组: (1、3、4、5、7、8) 我正在寻找我可以在数据库上使用的查询,以从我拥有的数组中获取表中未包含的ID:s的列表。可能是: (4、7) 是否存在?我现在的解决方案是创建一个临时表,以便命令

  • 问题内容: 假设我与用户和项目之间存在多对多关系:一个用户可能属于多个项目,而一个项目可能具有多个用户。此关系在表中编码: 这是我的问题:给定一组用户(user1,user2,…),我想选择给定用户集为其所有用户的子集的所有项目。 例如,如果我在下面插入数据,然后询问用户1和2的所有项目,则查询应仅返回项目1。 (如果最好的解决方案恰巧是非标准的,那么我使用的是PostgreSQL。) 编辑: 为

  • 问题内容: 我有一张调查答案表,类似: 并且我想创建一个查询,该查询将为我提供该表的结果摘要,从而允许我设置相关的日期范围。我下面的声明非常有效: 但是我不确定是否可以做得更好,以及在哪里添加日期范围过滤功能。 问题答案: 来自多刺的诺曼的第一个查询将给出这样的结果: 仅将几组不同的结果分组。我假设您想按问题将是/否的总数分类。在这种情况下,您必须执行以下操作: 结果: