【问题标题】:How would one delete any SQL row that is older than x amount of days while (column)Rank is x?当(列)Rank 为 x 时,如何删除任何早于 x 天的 SQL 行?
【发布时间】:2015-07-02 04:07:56
【问题描述】:

我设置了一个等级系统,其中 5 是管理员,4 是终身捐赠者,3 是捐赠者,2 是广告客户,1 是用户。
我不知道如何刷新所有行:
- 如果他们是用户,则一周大(排名:1)
-如果他们是广告客户,则两周大(排名:2)
-2 个月大,如果他们是捐赠者(等级:3)

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

任何帮助将不胜感激。

【问题讨论】:

    标签: php sql rank


    【解决方案1】:

    这样的事情可以解决问题:

    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) 
    

    【讨论】:

    • 感谢您知道它是否有效,但感谢您的快速响应
    • SELECT * FROM users WHERE (regDate
    【解决方案2】:

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

    第一个查询 - 排名 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";
    

    希望对你有所帮助。

    【讨论】:

      【解决方案3】:

      您需要在表中放置一列作为 value 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)
      

      【讨论】:

        猜你喜欢
        • 2015-02-17
        • 2014-02-07
        • 1970-01-01
        • 2020-03-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-28
        • 1970-01-01
        相关资源
        最近更新 更多