Android Sqlite 根据日期列删除最旧的重复结果

Posted

技术标签:

【中文标题】Android Sqlite 根据日期列删除最旧的重复结果【英文标题】:Android Sqlite remove oldest duplicate results based on date column 【发布时间】:2021-12-06 21:34:30 【问题描述】:

我有一个 android Sqlite 数据库,我正在尝试按 RANK 编号选择前 1000 行,因为 RANK 总是在变化我有时会得到具有相同 RANK 编号的重复行,我想做的只是保留包含基于其 CREATED_DATE 的最新 RANK 的重复行,我将在下面直观地显示:

id rank created_date
1  1    1/1/2014
2  2    1/1/2021
3  3    1/1/2021
4  1    1/1/2021

我想要的输出是:

id rank created_date
2  2    1/1/2021
3  3    1/1/2021
4  1    1/1/2021

我当前的代码接近但不会根据 CREATED_DATE 删除重复的 RANK,而是根据我不想要的 ID 删除它们,并且我无法在 CREATED_DATE 之前找到方法

    Cursor c = theDatabase.query(DATABASE_TABLE, columns, RANK + " BETWEEN 1 AND 1000", null,
            RANK, null, ID + " ASC");

上面的这段代码根据我不想要的 ID 删除重复项,并在下面给出这个输出:

id rank created_date
1  1    1/1/2014
2  2    1/1/2021
3  3    1/1/2021

任何帮助都将大有帮助,谢谢

【问题讨论】:

将您存储在表格中的日期格式更改为 YYYY-MM-DD 以便它具有可比性。 【参考方案1】:

您可以将GROUP BYmax() 函数一起使用。

例如select * from table group by rank having max(created_date)

【讨论】:

这解决了我的问题,谢谢!

以上是关于Android Sqlite 根据日期列删除最旧的重复结果的主要内容,如果未能解决你的问题,请参考以下文章

Django在数据库中找到最旧的条目

如何从字典中删除最旧的元素?

删除最旧的项目时防止 ListView 垂直滚动

git stash drop 最旧的存储(比如最旧的 5 个存储)

Hazelcast - 最旧的条目首先被驱逐

获取最旧的修改价格