我在Android应用程序中放置删除语句时遇到问题(我使用的是OrmLite)。
我有一张充满记录的表格。其中两个字段是" dateCreated" (type Date
)和" imageSize" (type int
)。在我的代码中,我有一个方法free(int size)
。这个方法告诉我,我必须从表中删除最旧的记录,即&#34; imageSize&#34; <=
大小。
例如..我得到参数1000.每个记录都有值让100说。这意味着我必须删除10个最旧的记录。
有人可以为我提供最佳的原始SQL语句,或者更好的OrmLite代码吗?
我会非常感激。
答案 0 :(得分:1)
不幸的是,您无法使用单个SQL语句执行此操作。没有办法说
选择记录,直到它们的总和小于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
}
答案 1 :(得分:0)
试试这个,
DELETE FROM yourtable WHERE imageSize <= (SELECT SUM(ImageSize) FROM yourtable)
为您的功能使用相同的参数