SQL用于查找组中的重复外键

Gra*_*ant 3 sql postgresql

表格基本上是这样的:

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
  ...
Run Code Online (Sandbox Code Playgroud)

我想找到一个单独observation_id存在重复element_ids的所有s observation_id.例如,如果我有以下Data记录:

1|50|23|4.5
2|50|24|9.9
3|66|23|4.4
4|66|23|4.1
Run Code Online (Sandbox Code Playgroud)

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

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

cod*_*ike 10

使用count()聚合和'having'子句:

select observation_id, element_id, count(*)
from Data
group by observation_id, element_id
having count(*) > 1