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

从表B获取所有与表A的多个条目(给定列表)相关的条目

卫梓
2023-03-14
问题内容

我有两张桌子。表A和表B。两者都有多对多的关系。

表A:

ID
---
1
2

表B:

ID
---
3
4

表AB:

ID | A_ID | B_ID
----------------
5  | 1    | 4
6  | 1    | 3
7  | 2    | 3

我想要得到的名单ID,从表S =B该有关系 的名单ID表第A

上表中的示例:

我想所有B这些都表的关系小号A ID1和ID2,我得到那么ID3具有这两个ID表第A

如何使用SQL查询做到这一点?


问题答案:

如果要基于“不作为”列表(而不是“全部”作为)进行选择,请按照以下步骤操作:

SELECT b_id
FROM ab
WHERE a_id IN (1,2)
GROUP BY b_id
HAVING COUNT(a_id) = 2

(1,2)用您的列表替换,并2在having子句中替换为列表项的数量。

如果从子查询中获得As的列表,则可以这样做(尽管不是在MySQL中…):

WITH subquery (
 --subquery code here
)

SELECT b_id
FROM ab
WHERE a_id IN subquery
GROUP BY b_id
HAVING COUNT(a_id) = (SELECT COUNT(*) FROM subquery)

在MySQL中,您必须将子查询代码放入两次,并删除WITH子句。

您还可以使用一个临时表,这将导致从该临时表中选择“全部为”,因此Gordon Linoffs会回答…



 类似资料:
  • 问题内容: 我有一张表格,其中每一行都是以下形式: 凡我查询寻找的价值配对,使用。就查询时间而言,改为使用一个表(其中每行是一个排列)是否更有效: 这样,我这次使用=运算符查询了值b。 值得注意的是,我感兴趣的用例当前有大约10,000行,其中每个“列表”元素平均有8个条目。我同时标记了两者,因为使用和的数据库都存在类似的问题。 问题答案: 我的查询在其中使用LIKE寻找一对值,%b%。就查询时间

  • 问题内容: 在SQL Server中,是否有一条命令返回与给定表或视图有关系的所有表的列表? 编辑:SQL SERVER 2008 问题答案: 对于SQL Server 2005及更高版本,请使用类似以下内容的内容:

  • 问题内容: 整个晚上 其实是晚上。大约晚上11点。我的大脑正在关闭,需要一些帮助,所以我可以完成工作并回家:) 我有两个表-表a和表b。当其他两个字段匹配时,我需要使用表b中的值更新表a中的字段。这些表的每个记录没有唯一的ID :( 基本上,我想这样做: 或者至少…我认为那是我想要做的… 有人可以帮我吗? 问题答案: 您可以通过更新中的联接来执行此操作:

  • 问题内容: 我有以下五个表: 互联网服务提供商 产品 联系 添加在 插件/产品(多对多关系的数据透视表)。 每个产品都链接到一个ISP,每个连接都列在一个产品上。通过使用数据透视表,每个产品可以具有许多附加组件(该数据透视表仅具有2个字段,一个字段用于产品ID,一个字段用于AddOn ID)。 我感兴趣的结果是列出的插件的每个连接(为此,我使用MySQL的GROUP_CONCAT,以逗号分隔列表的

  • 问题内容: 获取Oracle中所有表的列表? 问题答案: 假设您有权访问DBA_TABLES数据字典视图。如果您没有这些特权但需要它们,则可以请求DBA显式授予您对该表的特权,或者请求DBA授予您该SELECT ANY DICTIONARY特权或SELECT_CATALOG_ROLE角色(这两者都将允许您查询任何数据字典表) )。当然,您可能希望排除某些模式,例如SYS和模式,SYSTEM而这些模

  • 问题内容: 我说有Python清单。我也有一个索引列表,例如。如何获取带有索引的元素的列表? 问题答案: 您可以使用 列表推导 来获取该列表: 这等效于: 输出: 注意: 请记住,这是用于访问特定索引中a元素的表示法。