У меня есть дубликат запроса искателя ...Преобразовать Duplicate Finder запросов на Отбросьте все Но последние записи
SELECT
Author, Name, TrackNum, title_id, COUNT(*)
FROM
db.table
GROUP BY
Author, Name, TrackNum, title_id
HAVING
COUNT(*) > 1
возвращает те записи, которые являются дубликатами, и подсчет того, сколько есть.
Я хотел бы расширить это, чтобы оно уменьшало все, кроме последней версии каждого дубликата (ов). Я думаю, мы могли бы использовать поле id
или datetime
, которое у меня есть в таблице, чтобы определить, какие записи хранить. Или есть другой способ?
Edit: Я на полпути ...
SELECT
*
FROM
db.table
GROUP BY
Author, Name, TrackNum, title_id
HAVING
COUNT(*) > 1
ORDER BY
Name, TrackNum
выше, кажется, чтобы показать одну копию каждого дубликата. Когда я удаляю их в workbench, я оставляю оставшиеся уникальные записи. Я просто хотел бы автоматизировать этот шаг дальше. Также это не учитывает более двух идентичных записей.
Спасибо за замечательный ответ. Я просто работаю над этим сейчас в тестовой среде. Я попробовал параноидальную версию. Сначала я заменил все вхождения db своим именем db. Я получил синтаксическую ошибку, поэтому удалил лишний ';'. Затем я получил сообщение об ошибке «Код ошибки: 1248. Каждая производная таблица должна иметь свой собственный псевдоним». Есть идеи? –
Я забыл поместить псевдоним в Шаг 02. Попробуйте еще раз ... – RolandoMySQLDBA
OK пробовал, что теперь я получаю эту ошибку ... 'У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с 'INSERT INTO KeysToKeep SELECT id FROM (SELECT MAX (id) id, Author, Name, T' в строке 12' Примечание. Я удалил лишнюю точку с запятой о котором я упомянул ранее (строка 7). –