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

SQL查询一对多关系的两个表

仉昱
2023-03-14
问题内容

我有两个表A和Band,A与B之间的关系是A —>一对多—> B

通常,对于A的每条记录,我都有一个B的记录。

我正在尝试编写一个查询,该查询将为我提供A的 唯一 记录列表,其中B中的 记录 超过 一个(多个)

我很困惑,因为我只完成了基本的sql查询,而这对我来说似乎很复杂。

可以请一个人指导我正确答案或给我解决方案。

编辑:

好吧,我尝试了下面的事情,它给了我一个错误

从A a,B b中选择SOME_COLUMN_NAME a.ID = b.ID并计数(b.SOME_OTHER_COLUMN_NAME)> 1;

ORA-00934:此处不允许使用组功能

我试图在互联网广告上进行搜索,但我不允许在where子句中使用分组,而应该通过使用hading进行搜索。我现在被困在这里。


问题答案:

您尚未指定正在使用哪个数据库系统(sql-server / mysql / sqlite / oracle等),因此这是一个通用答案。

以这种形式,在SELECT和GROUPBY子句中显式列出A的所有列。通常,在大多数DBMS中,它都会生成一个简单明了的计划。但是,如果该类型不可用于GROUP,例如SQL
Server中的TEXT列,它也会惨遭失败。

SELECT A.Col1, A.Col2, A.Col3
FROM A
JOIN B ON A.LinkID = B.LinkID
GROUP BY A.Col1, A.Col2, A.Col3
HAVING COUNT(*) > 1

使用子查询的另一种形式适用于A中的任何列类型,并且 通常 产生完全相同的计划。

SELECT A.Col1, A.Col2, A.Col3
FROM A
WHERE 1 < (
    SELECT COUNT(*)
    FROM B
    WHERE A.LinkID = B.LinkID)


 类似资料:
  • 实现了一对多的关系,它运行良好。 我的问题是当我运行下面的查询时,如果表有100个员工行,每个员工有两个部门。数据库查询被调用了101次,因为对每个员工都是调用部门查询,要完成调用全部100行需要很长时间,有没有人可以提出替代的解决方案? 输出XML:

  • 我有一个桌子实验和一个桌子标签。一个实验可能有许多标签。架构: 是否可以使用返回实验和相应标签列表的jooq创建查询? 类似

  • 我需要以下场景的SQL查询。 @ManyToOne@JoinColumn(name=“PRODUCT_ID”)私有产品产品; 但我没有在产品中指定一个。

  • 问题内容: 有三个表:,并且,医院能提供的医疗服务和语言服务。因此,存在两个多对多关系。 简单ERD 现在,我想使用和搜索医院数据。 DaoImpl: 而且,如果我想从三个表中按邮政编码,医疗类型和语言进行搜索,那么如何编写一个jsql。 警告: 错误:org.hibernate.hql.internal.ast.ErrorCounter- 预期加入的路径!希望加入的路径!在org.hiberna

  • 问题内容: 我有以下表格(仅列出必需的属性) 药品(身份证,姓名), 通用(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毫升”)

  • 问题内容: 因此,我有以下实体: 因此,没有对的引用,这意味着我们具有单向一对多关系。我需要寻找一个by 和。也就是说,找到具有指定posId的供应商,然后在供应商的pos列表中找到一个pos。如何为此编写条件查询? 我尝试使用子查询。我的想法是创建一个子查询,该子查询将获取具有给定条件的a的所有内容。然后,主查询将那些中搜索的一个给定。 问题是我无法编写查询来获取s的s列表。显然,您不能编写以下