В настоящее время я делаю публичный справочник по PHP с использованием MySQL. Иногда спамеры меняют вещи, и я хотел бы вернуться к предыдущей версии страницы.SQL удалите спам-строку, обновите последнюю строку
Все версии страниц хранятся, поэтому моя проблема - это просто запрос.
UPDATE pages new, pages old SET new.status='2',old.status='1' WHERE new.ip='<spambotip>' AND new.status='0' AND old.title=new.title AND old.status='1' AND old.last_modified IN (SELECT max(last_modified) FROM pages tr WHERE tr.title = new.title AND tr.status='0')
Однако я получаю следующее сообщение об ошибке:
You can't specify target table 'new' for update in FROM clause
Мой запрос предназначен для поиска всех страниц со статусом = 1 (активной), что спамбот сделал, установить статус этой страницы на 2 (вредную) , затем найдите страницу с наивысшим last_modified, с тем же заголовком и статусом 0 (неактивно) и установите его статус на 1.
Мне кажется, мне нужно использовать внутренние циклы, но у меня возникают проблемы с представлением о том, как это можно сделать сделайте. Я немного искал Google, но не нашел ничего, что мог бы использовать.
Любая помощь приветствуется, спасибо!
Как бы один соединить старую и новую версию той же странице? Они имеют один и тот же идентификатор? –