Страницы

Поиск по вопросам

четверг, 4 октября 2018 г.

Запрос SQL на удаление дубликатов из таблицы по одному полю

Есть таблица с дубликатами в MySQL: (по полю name) id | name | surname -------------------- 1 | niko | surname 2 | niko | surname 3 | jane | surname 4 | jane | surname 5 | ivan | surname Необходимо получить таблицу такого вида id | name | surname -------------------- 1 | niko | surname 3 | jane | surname 5 | ivan | surname


Ответ

Запрос для результирующей таблицы: SELECT min(id), name, surname FROM `table` GROUP BY name, surname Для удаления дубликатов подойдет такой прием: CREATE TEMPORARY TABLE `t_temp` as ( SELECT min(id) as id FROM `table` GROUP BY name, surname );
DELETE from `table` WHERE `table`.id not in ( SELECT id FROM t_temp ); Есть конечно нюансы...

Комментариев нет:

Отправить комментарий