问题:SQL查找组中重复的外键

基本上像这样的表:

Elements
  id INT PRIMARY KEY
  ...

Observations
  id INT PRIMARY KEY
  ...

Data
  id INT PRIMARY KEY
  observation_id FOREIGN KEY
  element_id FOREIGN KEY
  value FLOAT
  ...

我想找到在单个observation_id中有重复element_id的所有observation_id。例如,如果我有Data记录,例如:

1|50|23|4.5
2|50|24|9.9
3|66|23|4.4
4|66|23|4.1

然后查询将报告observation_id``66,因为它有两个与element_id``23关联的行。

(我使用的是 PostgreSQL,但这可能是一个基本的 SQL 问题。)

解答

将 count() 聚合与“have”子句结合使用:

选择观察_id,元素_id,计数(*)

从数据

按观察_id、元素_id 分组

计数(*) > 1

Logo

PostgreSQL社区为您提供最前沿的新闻资讯和知识内容

更多推荐