我设置了一个排名系统,其中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)
尚未测试。在运行此查询以测试它是否删除正确的数据而不是删除之前,请放置 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)