Just:
DELETE DupRows
FROM output AS DupRows
INNER JOIN output AS SaveRows
ON SaveRows.Title = DupRows.Title
AND SaveRows.Type = DupRows.Type
AND DupRows.Output_ID > SaveRows.Output_ID
Это удалит все дубликаты на Title
и Type
, сохраняя запись с самым низким значением.
Если вы используете MySQL 8.0, выможет использовать оконную функцию ROW_NUMBER()
для присвоения ранга каждой записи в группах заголовков / типов, упорядоченных по идентификатору.Затем вы можете удалить все записи, чей номер строки не равен 1.
DELETE FROM output
WHERE Output_ID IN (
SELECT Output_ID
FROM (
SELECT Output_ID, ROW_NUMBER() OVER(PARTITION BY Title, Type ORDER BY Output_ID) rn
FROM output
) x
WHERE rn > 1
)