Есть таблица с дубликатами в 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
);
Есть конечно нюансы...
Комментариев нет:
Отправить комментарий