SQL - 按日期循环遍历行的最佳实践方法

时间:2014-09-05 08:12:27

标签: java sql sqlite date

我正在使用JAVA表单和SQLite数据库驱动的应用程序,该应用程序每天收集一些信息,有时一天收集多次。

输入表单和数据库看起来像这样

Input Form

Database Layout

我想做的是能够按下"下一条记录"或者"以前的记录"它将按日期转到下一条记录,但记录可以设置相同的日期。

如果我去ID,那么当我删除行时,没有办法搞砸了。 如果有人进来并编辑了一个旧的记录日期,如果我按ID进行操作,它也会扰乱周期。

开发人员如何循环浏览这样的记录?

由于

1 个答案:

答案 0 :(得分:1)

我建议使用日期/ ID索引(假设没有其他标准),然后将这些列用作ORDER BY的一部分。这将确保同一天的所有记录,保持一致的顺序。

您也可以通过这种方式对当前记录使用相对过滤器,即

WHERE (new.date = old.date AND new.ID > old.ID)
OR new.date > old.date

将此与您的订单相结合,您将拥有下一条记录'作为你每次的第一个结果。

之前是相似的 - 只是颠倒了标准。

生成的查询应如下所示:

SELECT   TOP 1 *
FROM     Table t
WHERE    (t.Date = old.Date AND t.ID > old.ID)
OR       t.Date > old.Date
ORDER BY Date, ID

old.Date和old.ID是传入的参数(我猜测SQLite使用类似的TOP到MSSQL,而不是Rownum或限制)。