【问题标题】:SQLite iOS DB delete old recordsSQLite iOS DB 删除旧记录
【发布时间】:2015-04-11 01:18:45
【问题描述】:

我正在尝试为我的 SQLite 数据库构建一个 DELETE 语句,以确保删除超过 X 条记录的任何内容。我对 SQL 不太熟悉,所以我不知道如何编写,我还需要确保记录首先按日期字段排序,该字段存储为 INTEGER,以便确保我m 保留最新的 X 行并删除旧的记录。

非常感谢任何有关如何执行此操作的帮助。

【问题讨论】:

  • 您不需要对记录进行排序,也不需要子选择。只需delete from table where datefield < int_value

标签: ios sql sqlite


【解决方案1】:

您可以使用类似于以下内容的查询。您的日期列上可能也应该有一个索引。

DELETE FROM mytable WHERE date_column >= (
    SELECT date_column 
    FROM mytable 
    ORDER BY date_column 
    OFFSET num_rows_you_want_to_keep 
    LIMIT 1 
)

【讨论】:

    【解决方案2】:

    可以在 SQLite 中使用 Sub Query 并利用 limit 来完成

    在这里,您的子查询将根据您的限制 X(5) 返回所有需要删除的 ID。希望对你有帮助

     DELETE FROM TABLENAME WHERE ID IN ( 
        SELECT ID FROM TABLENAME 
        WHERE DATE < strftime('%s','now') limit 5
        );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-09
      • 2012-08-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多