【发布时间】:2012-04-30 02:24:48
【问题描述】:
如果记录数为 110,我想从我的 SQLite 表中删除前 10 条记录(即记录 1 到 10)。我的表中只需要 100 条记录。如果记录数超过 100,则应删除这些记录,因此,如果我添加新记录,则也应仅存在 100 条记录。怎么可能使用 SQLite 查询,请提供您的建议。谢谢。
【问题讨论】:
标签: sqlite
如果记录数为 110,我想从我的 SQLite 表中删除前 10 条记录(即记录 1 到 10)。我的表中只需要 100 条记录。如果记录数超过 100,则应删除这些记录,因此,如果我添加新记录,则也应仅存在 100 条记录。怎么可能使用 SQLite 查询,请提供您的建议。谢谢。
【问题讨论】:
标签: sqlite
我推测您希望通过在每次表超过 100 行时删除前“X”行来保持表中的 100 行。以下是您可以执行的操作:
Delete from table_name where rowid IN (Select rowid from table_name limit X);
随着 SQLite 表的增长,这将继续删除前“X”行。
【讨论】:
DELETE FROM table_name WHERE rowid NOT IN (SELECT rowid FROM table_name ORDER BY rowid LIMIT X);
首先,您必须执行一个返回表中最后 100 条记录的选择,然后使用 delete 命令删除所有不在结果中的 id,如下所示:
DELETE FROM tbl_name WHERE NOT EXISTS in (SELECT id FROM tbl_name ORDER BY id LIMIT 100 );
希望这会有所帮助!
【讨论】:
DELETE FROM Data_Table WHERE RecordID in (select RecordID from Data_Table limit 10) 此查询工作正常。它成功删除了前 10 条记录。现在删除后我想更新列表,即从 1 到 110 的 110 条记录中,如果我删除前 10 条记录,则该表包含从 11 到 110 的 ID。但我想再次将其设为 1 到 100。我该如何执行此操作。
SELECT @m:=0;SELECT @m:=@m+1 AS counter, * FROM tbl_name... 等。
DELETE FROM {{ table }} LIMIT 0, 10
我不完全确定这是否正确,我目前无法检查。
【讨论】:
SQLITE_ENABLE_UPDATE_DELETE_LIMIT 编译 SQLite 才能使限制子句起作用,否则它将不起作用。 sqlite.org/compile.html#enable_update_delete_limit