0

我目前正在使用 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 子句中为更新指定目标表“新”

我的查询旨在查找垃圾邮件机器人创建的所有状态 = 1(活动)的页面,将该页面的状态设置为 2(垃圾),然后找到具有最高 last_modified、相同标题且状态为 0(非活动)的页面并将那个人的状态设置为1。

我认为我需要使用内部循环,但我无法想象如何完成它。我用谷歌搜索了一下,但没有找到任何我可以使用的东西。

任何帮助表示赞赏。

4

1 回答 1

0

编辑:

Dim sList as String  = ... SELECT group_concat(title) FROM pages WHERE ip='<spambotip>'

UPDATE pages  SET staus=2 where  title IN (...)

 UPDATE pages SET status=1 where id IN (SELECT id from (SELECT id,  max(last_modified) from pages where title in (...) and status=0 group by title) x )
于 2012-05-04T09:54:23.843 回答