При написании сценария преобразования базы данных я столкнулся с проблемой дублирования записей, моя цель - найти их и удалить дубликаты. Я никоим образом не являюсь экспертом по SQL, поэтому ищите рекомендации!Выбор и удаление из той же таблицы
Самое лучшее, что я смог придумать настолько далеко, чтобы найти и удалить дубликаты записей (если group_name и уровень) одни и те же это
DELETE FROM achievements
WHERE group_name IN (SELECT concat(group_name, level)
FROM achievements
GROUP BY group_name, level
HAVING count(*) >1);
Но это дает мне следующую ошибку
[Err] 1093 - таблицу «достижения» был указан в два раза, как в качестве мишени для «DELETE» и в качестве отдельного источника данных
Здесь мои текущие данные; https://gist.github.com/Diddyy/13842901c830c19c21488613c9d27c92
Из этих данных имеется 3 дубликата (имя_группы, за которым следует уровень);
ACH_CameraPhotoCount 5
ACH_FootballGoalScoredInRoom 1
ACH_FootballGoalScoredInRoom 2
I класс это как дублирующий, как уже есть запись с таким же именем и уровня.
Мой конечный результат - удалить 3 дубликата, но оставить позади один из них, чтобы он все еще существовал.
Примечание. Допускается повторное имя группы. Допускается повторный уровень. Но то, чего я не хочу, является group_name с одинаковым уровнем более одного раза.
Я не могу придумать решение для этого, так как я не слишком уверен, что concat будет лучшим способом?
Открыть любое решение, спасибо!
Вы можете предоставить образцы данных и желаемые результаты? –
@ GordonLinoff Добавлена информация, извинения! –