SQL删除垃圾邮件行,更新最近的行

时间:2012-05-04 09:21:14

标签: mysql sql row

我目前正在使用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'

我的查询是为了找到spambot所做的状态= 1(活动)的所有页面,将该页面的状态设置为2(垃圾),然后找到last_modified最高,页面名称相同且状态为0的页面(不活动)并将该状态设置为1。

我认为我需要使用内部循环,但我在想象它是如何完成的。我已经google了一下,但没找到任何我可以使用的东西。

感谢任何帮助。

1 个答案:

答案 0 :(得分: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 )