SELECT planung_id, GROUP_CONCAT(id) AS aufgabe_id, Nummer, COUNT(1) as num_duplicates
FROM aufgabe
GROUP BY planung_id, Nummer
HAVING COUNT(1) > 1
Этот запрос выдает все planung_id с дублирующимся Nummer и отображает их следующим образом:
planung_id aufgabe_id Nummer num_duplicates
1 2,5,8 1 3
Это означает, что для Planung 1 существует три Aufgabe с Nummer 1, и они равны 2,5и 8.
Редактировать : бесстыдно украденный из комментария @ dgw : После того, как вы выполнили этот запрос и исправили все дубликаты.Добавьте уникальный индекс к aufgabe {planung_id, Nummer}
, чтобы убедиться, что база данных поддерживает это ограничение:
ALTER TABLE aufgabe
ADD CONSTRAINT UNIQUE uq_planung_id_and_nummer (planung_id, Nummer)