Удалить дубли из таблицы mysql

480
25 мая 2017, 09:14

Здравствуйте, есть таблица (40К записей). Есть дублирующие записи. Нужно их удалить, оставив одну оригинальную.

Делаю так (сравниваю по столбцу name)

delete from `admin_eda`.`eda` 
where `eda`.`id` not in (
                         select min(`eda`.`id`) 
                         from `admin_eda`.`eda` 
                         group by `eda`.`name`
                        )

Выдает

#1093 - Не допускается указание таблицы 'eda' в списке таблиц FROM для внесения в нее изменений
Answer 1

Конвертируйте подзапрос в представление (view), и ограничение не сработает. А вью потом удалите, операция-то одноразовая...

CREATE VIEW select_min_id_from_eda
AS
SELECT MIN(`eda`.`id`) min_id
FROM `admin_eda`.`eda` 
GROUP BY `eda`.`name`;
DELETE FROM `admin_eda`.`eda` 
WHERE `eda`.`id` 
  NOT IN ( SELECT min_id
           FROM select_min_id_from_eda
         );
DROP VIEW select_min_id_from_eda;
READ ALSO
Как скопировать данные одной таблицы в другую?

Как скопировать данные одной таблицы в другую?

Имеется две идентичные таблицы, пусть table1, table2, но одна таблица заполнена данными, а вторая только наполовинуВ таблицах есть такие поля: id, user_id,...

289
Как скрывать клавиатуру при нажатии вне её области?

Как скрывать клавиатуру при нажатии вне её области?

Как скрывать клавиатуру при нажатии вне её области?

260
Помогите с модульным тестом на Java :(

Помогите с модульным тестом на Java :(

Написать модульный тест для метода UnitisCloseTo(), проверить, что он действительно проверяет 8-связных соседей на прямоугольной сетке

246
Парсинг ответа от сервиса Mailgun в Java объект

Парсинг ответа от сервиса Mailgun в Java объект

Не выходит распарсить ответИнтересует объект message, необходимо свойство "message-id"

271