Это взлом в MySQL.MySQL не позволяет DELETE
или UPDATE
напрямую ссылаться на изменяемую таблицу.Дополнительный подзапрос материализует таблицу и позволяет коду работать.
Многие люди пишут это, используя JOIN
вместо:
DELETE p
FROM Person p JOIN
(SELECT p2.email, MIN(p2.ID) as min_id
FROM person p2
GROUP BY p2.email
) pp
ON pp.email = p.email
WHERE p.id > pp.id;