SQL для поиска дубликатов внешних ключей в группе - PullRequest
3 голосов
/ 05 мая 2009

С таблицами в основном так:

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 s, где есть дубликаты element_id s в одном 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 Ответ

10 голосов
/ 05 мая 2009

Используйте агрегат count () в сочетании с предложением «has»:

select observation_id, element_id, count(*)
from Data
group by observation_id, element_id
having count(*) > 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...