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

时间:2009-05-05 00:18:28

标签: 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
  ...

我想查找单个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问题。)

1 个答案:

答案 0 :(得分:10)

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

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