使用Android房间的递归查询

时间:2019-04-08 07:24:54

标签: android sqlite android-room

即使表中缺少某些日期,也需要从表中获取最近10个最近日期的行。

此查询可以很好地获取日期,但问题是android room dao中的同一查询在“ SELECT x + 1” x处引发了编译错误。

@Query(WITH RECURSIVE
 stepDtailsTable(x) AS (
        SELECT 0
        UNION ALL
        SELECT x + 1 FROM stepDtailsTable
        LIMIT(SELECT((julianday('2019-03-20')-julianday('2019-03-01')))+1)
        )
        SELECT date(julianday('2019-03-01'),'+'||x||' days')as date FROM stepDtailsTable")
StepDetailsPojo getLastTenDayData();

1 个答案:

答案 0 :(得分:0)

我注意到您在使用Julian日期常量,而您想从表中查询最近的最近10个日期。这是一个执行此查询的查询,填补了从表中找到的最大日期到10天之前的间隔。我无法在您的平台上进行测试,因此可能无法解决您遇到的编译器错误,可能是因为不支持RECURSIVE。希望它可以使您更进一步。

WITH RECURSIVE
 cte(x) AS (
    SELECT julianday(date(max(thedate))) from TheDataTable  
    UNION ALL
    SELECT x-1 FROM cte
    LIMIT 10
)
SELECT date(x) FROM cte