現在、MySQL を使用して PHP で公開リファレンス ガイドを作成しています。スパマーが内容を変更することがあるので、以前のバージョンのページに戻したいことがあります。
ページのすべてのバージョンが保存されるため、私の問題はクエリだけです。
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')
ただし、次のエラーが表示されます。
FROM 句で更新対象のテーブル 'new' を指定することはできません
私のクエリは、スパムボットが作成した status = 1 (アクティブ) のすべてのページを検索し、そのページのステータスを 2 (ジャンク) に設定してから、last_modified が最も高く、同じタイトルで、ステータスが 0 (非アクティブ) のページを見つけることを意図しています。そのステータスを 1 に設定します。
内部ループを使用する必要があると思いますが、それを行う方法を想像するのに問題があります。私は少しグーグルで調べましたが、使用できるものは見つかりませんでした。
どんな助けでも大歓迎です。