我无法在我的 Android 应用程序中组合删除语句(我使用的是 OrmLite)。
我有一个充满记录的表格。其中两个字段是“dateCreated”(type Date
)和“imageSize”(type int
)。在我的代码中,我有一个方法 free(int size)
.此方法告诉我必须从我的表中删除最旧的记录,总和为“imageSize”<=
大小。
例如 .. 我得到参数 1000。每条记录的值假设为 100。这意味着我必须删除 10 条最旧的记录。
有人可以为我提供最佳的原始 SQL 语句或者更好的 OrmLite 代码吗?
我将不胜感激。
最佳答案
不幸的是,您不能使用单个 SQL 语句来完成此操作。没办法说
select records until their sum is less than X
您可以执行多个查询,直到找到总和小于 X 的最旧记录,但这需要多次单独的 SQL 调用。
我建议选择最后 X 个图像及其大小,然后使用 DELETE ... IN ...
删除正确数量的图像。这是伪代码:
while (true) {
SELECT id, imageSize FROM yourtable ORDER BY dateCreated DESC LIMIT 10;
find the images from the bottom whose sum(imageSize) <= parameter
delete the found images
break if you exceed the parameter otherwise loop and get the next 10
}
关于android - 使用 OrmLite 在 Sqlite 中组合删除语句的帮助不大,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6594690/