Удалить - я не могу указать целевую таблицу? - PullRequest
29 голосов
/ 28 апреля 2011

Почему этот запрос не работает?

DELETE FROM recent_edits 
WHERE trackid NOT IN 
     (SELECT DISTINCT history.trackid 
     FROM history JOIN recent_edits ON history.trackid=recent_edits.trackid 
     GROUP BY recent_edits.trackid)

Я получаю это сообщение: «Вы не можете указать целевую таблицу« Recent_edits »для обновления в предложении FROM

Ответы [ 2 ]

81 голосов
/ 28 апреля 2011

Попробуй таким образом

DELETE FROM recent_edits 
WHERE trackid NOT IN 
     (select * from (SELECT DISTINCT history.trackid 
     FROM history JOIN recent_edits ON history.trackid=recent_edits.trackid 
     GROUP BY recent_edits.trackid) as t);
15 голосов
/ 20 января 2017

Вы не можете постобработать таблицу, заблокированную для удаления. использование хака select * from (query) в качестве состояния Никола создаст временную таблицу вместо прямого доступа.

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

...