【问题标题】:How to delete rows from a table using 'LIMIT'如何使用 'LIMIT' 从表中删除行
【发布时间】:2011-12-13 13:29:21
【问题描述】:

我在我的 iPhone 应用程序中使用 FMDB(对它来说很新!)并且希望将表中的行数限制为某个值。每当我插入新记录时,我想检查一些 maxNumberOfEntries 是否超出,如果是,则删除最旧的条目。我尝试了以下方法:

(...)        
[db beginTransaction];
[db executeUpdate: @"DELETE FROM table_name WHERE someId = ? ORDER BY date LIMIT 10", [NSNumber numberWithInt: 123], nil];
[db commit];
(...)

但似乎 sqlite 无法识别查询的“LIMIT”部分。如何在不直接指定要删除的条目的情况下删除表中的特定行数?

【问题讨论】:

  • LIMIT start,range 所以如果你想删除前 30 个,做 LIMIT 0,30 请记住,如果你想保留第一个,并且仍然想删除 30 它变成 LIMIT 1, 30 而不是 LIMIT 1,31
  • 对我不起作用。没有限制部分,我删除了所有带有 someId=123 的条目,用它我什么都不删除。

标签: ios iphone sqlite sql-delete


【解决方案1】:

我没有尝试过,但它可能是相关的。

有一个名为 SQLITE_ENABLE_UPDATE_DELETE_LIMIT 的编译标志可以启用该功能:

http://sqlite.org/compile.html#enable%5Fupdate%5Fdelete%5Flimit

这是一个相关的 SO 帖子:

How do you enable LIMIT for DELETE in SQLite?

在相关帖子中,您可以在 select 语句中使用 delete where id 并在 select 中尝试限制:

How can I delete data with specific row number (sqlite)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-25
    • 2015-09-24
    • 1970-01-01
    • 1970-01-01
    • 2018-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多