У меня есть строки в таблице базы данных Oracle, которые должны быть уникальными для комбинации двух полей, но уникальное ограничение не задано для таблицы, поэтому мне нужно найти все строки, которые сами нарушают ограничение, используя SQL.К сожалению, мои скудные навыки SQL не подходят для этой задачи.
В моей таблице три релевантных столбца: entity_id, station_id и obs_year.Для каждой строки комбинация station_id и obs_year должна быть уникальной, и я хочу выяснить, есть ли строки, которые нарушают это, сбрасывая их с помощью SQL-запроса.
Я пробовал следующий SQL (предложенный этот предыдущий вопрос ), но он не работает для меня (у меня столбец ORA-00918 определен неоднозначно):
SELECT
entity_id, station_id, obs_year
FROM
mytable t1
INNER JOIN (
SELECT entity_id, station_id, obs_year FROM mytable
GROUP BY entity_id, station_id, obs_year HAVING COUNT(*) > 1) dupes
ON
t1.station_id = dupes.station_id AND
t1.obs_year = dupes.obs_year
Может кто-нибудь подсказать, что я делаю неправильно, и /или как это решить?