Использование:
DELETE FROM TABLE t1
JOIN (SELECT MAX(jobPositonId) AS max_id FROM TABLE) t2
WHERE t1.jobPositonId = t2.max_id
Имейте в виду, что все строки с этим значением jobPositonId
будут удалены, если есть дубликаты.
Глупая часть ошибки 1093 заключается в том, что вы можете обойти ее, поместив подзапрос между ссылками на себя:
DELETE FROM TABLE
WHERE jobPositonId = (SELECT x.id
FROM (SELECT MAX(t.jobPostionId) AS id
FROM TABLE t) x)
Объяснение
MySQL проверяет только при использовании операторов UPDATE
& DELETE
, есть ли подзапрос первого уровня к той же таблице, которая обновляется. Вот почему перевод его на второй уровень (или более глубокий) альтернативный подзапрос работает. Но это только проверка подзапросов - синтаксис JOIN логически эквивалентен, но не вызывает ошибку.