我建立了一个等级系统,其中 5 是管理员,4 是终身捐助者,3 是捐助者,2 是广告商,1 是用户。
我无法弄清楚如何刷新以下所有行:
-一周大,如果他们是用户(排名:1)
-两周大,如果他们是广告客户(排名:2)
-2 个月大,如果他们是捐赠者(排名: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)
我可能会使用三个单独的查询来查询数据库并删除行。
第一个查询 - 排名 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";
我希望这有帮助。
您需要在表中放置一列作为值 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)