Чистка от дублей SQL

D
На сайте с 28.06.2008
Offline
1033
315

Запросом вида я нашел дубли по ФИО, 

select id,fio, count(*), 
group_concat( id separator ',' ), group_concat( img separator ',' ) as groupImg
from fio_info
group by fio
having count(*) > 1

но есть нюанс, у некоторых из этих дублей есть фото, а у некоторых нет - поле img (на скрине ниже это видно в столбце groupImg


Вопрос - как мне удалить дубль без фото?

Раньше я это делал так

CREATE TABLE `t_temp` 
as  (
SELECT min(id) as id
from fio_info
    group by fio
having count(*) > 1
);
ALTER TABLE `t_temp` ADD PRIMARY KEY(`id`);
DELETE from `fio_info`
WHERE `fio_info`.id in (
   SELECT id FROM t_temp
);
DROP TABLE `t_temp`;

Но тут выбирается чисто минимальный ID из группировки, а я не могу сообразить как выбрать и удалить дубль без фото

C
На сайте с 04.02.2005
Offline
263
#1
Джойнить таблицу к самой себе

DELETE t2 
FROM `ttt` t1
JOIN ttt t2 ON 1
WHERe t1.fio = t2.fio
AND t1.id<>t2.id
and t2.icon is null

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий