android - 使用 OrmLite 在 Sqlite 中组合删除语句的帮助不大

标签 android sql sqlite ormlite

我无法在我的 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/

相关文章:

java - 图像加载和上传到 Firebase 存储在 android 和 firebase 控制台中不起作用,显示 "error loading preview"

android - 适用于Android的Redis库?

mysql - 从具有多个条件的多个表中进行选择

mysql - 返回 MySQL 中相对于结果集开头或结尾的一系列行

c# - 在程序启动时同步文件系统和缓存数据

android - 检查空数据库会引发错误

objective-c - Sqlite3步骤== SQLITE_ROW对我不起作用

android - 我是否必须同时拥有 Droid 和 HTC 才能测试我的 Android 应用程序?

Android TV(Leanback 启动器)- android 开发人员的软键盘不起作用

mysql - 使用 max sql 获取关联值