我目前有一个DAO查询语句的sql语句:
@Query(
"select " +
" avg(q1.weight) over (rows between 3 PRECEDING AND CURRENT ROW) as adjusted_weight " +
"from weight_record AS q1 " +
"order by q1.date"
)
LiveData<List<AggregatedWeightRecord>> getAggregatedRecords();
当我直接在sqlite3内尝试此查询时,它可以正常工作。当我将其放入Android Studio并尝试进行编译时,出现此错误:
error: extraneous input '(' expecting {<EOF>, ';', K_ALTER, K_ANALYZE, K_ATTACH, K_BEGIN, K_COMMIT, K_CREATE, K_DELETE, K_DETACH, K_DROP, K_END, K_EXPLAIN, K_INSERT, K_PRAGMA, K_REINDEX, K_RELEASE, K_REPLACE, K_ROLLBACK, K_SAVEPOINT, K_SELECT, K_UPDATE, K_VACUUM, K_VALUES, K_WITH, UNEXPECTED_CHAR}
extraneous input ')' expecting {<EOF>, ';', K_ALTER, K_ANALYZE, K_ATTACH, K_BEGIN, K_COMMIT, K_CREATE, K_DELETE, K_DETACH, K_DROP, K_END, K_EXPLAIN, K_INSERT, K_PRAGMA, K_REINDEX, K_RELEASE, K_REPLACE, K_ROLLBACK, K_SAVEPOINT, K_SELECT, K_UPDATE, K_VACUUM, K_VALUES, K_WITH, UNEXPECTED_CHAR}
我试图更改查询,但现在需要使用Windows。我还在@Query之前添加了@SkipQueryVerification,但仍然收到错误。
我有什么选择可以编译并同时具有LiveData功能?
简而言之,您将不得不使用不使用窗口函数的替代查询。
SQLite 3.25.0中引入了对Window函数的支持,因此支持OVER的使用。
在官方Android列表中,SQLite支持最高的版本是SQLite 3.19。因此,OVER是无效的语法,您不能使用Window函数。android.database.sqlite
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句