0

我建立了一个等级系统,其中 5 是管理员,4 是终身捐助者,3 是捐助者,2 是广告商,1 是用户。
我无法弄清楚如何刷新以下所有行:
-一周大,如果他们是用户(排名:1)
-两周大,如果他们是广告客户(排名:2)
-2 个月大,如果他们是捐赠者(排名:3 )

同时将所有管理员和终身捐助者留在表中。

任何帮助将不胜感激。

4

3 回答 3

3

像这样的东西可以解决问题:

DELETE 
FROM Test
WHERE (TestDate < NOW() - INTERVAL 1 WEEK AND Rank = 1) 
      OR (TestDate < NOW() - INTERVAL 2 WEEK AND Rank = 2) 
      OR (TestDate < NOW() - INTERVAL 2 MONTH AND Rank = 3) 

还没有测试。在运行此查询以测试它是否删除了正确的数据而不是DELETE之前,请放置SELECT并查看出现了哪些行,然后运行此查询。

SELECT * FROM Test 
WHERE (TestDate < NOW() - INTERVAL 1 WEEK AND Rank=1)
  OR (TestDate < NOW() - INTERVAL 2 WEEK AND Rank = 2)
  OR (TestDate < NOW() - INTERVAL 2 MONTH AND Rank = 3) 
于 2013-01-25T20:56:43.827 回答
1

我可能会使用三个单独的查询来查询数据库并删除行。

第一个查询 - 排名 1(用户):

$query = "DELETE FROM table WHERE rank=1 AND time > UNIX_TIMESTAMP()-604800";

第二个查询 - 排名 2(广告商):

$query = "DELETE FROM table WHERE rank=2 AND time > UNIX_TIMESTAMP()-1209600";

第三个查询 - 等级 3(捐赠者):

$query = "DELETE FROM table WHERE rank=3 AND time > UNIX_TIMESTAMP()-2592000";

我希望这有帮助。

于 2013-01-25T21:02:54.897 回答
0

您需要在表中放置一列作为值 datetime 并使用以下 wuery 根据条件删除记录

CREATE TABLE IF NOT EXISTS `test` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`rank` int(10) NOT NULL,
`timestamp` datetime NOT NULL,
 PRIMARY KEY (`id`)
 )  

DElETE 
FROM test
WHERE (week( `timestamp` ) >= 1 AND Rank = 1) 
  OR (week( `timestamp` ) >= 2  AND Rank = 2) 
  OR (week( `timestamp` ) >= 4  AND Rank = 3)
于 2013-01-25T21:40:15.730 回答