1

我正在尝试创建时间戳的静态列表,以便我可以将它们再次加入另一个表以创建图表数据。到目前为止,我有一个这种格式的查询SELECT * FROM (VALUES('a'),('b'),('c'),('d')) AS tbl,它在 sqlitestudio 中有效,但在 android 4.4 中无效。当我在手机中运行查询时出现错误

android.database.sqlite.SQLiteException: near "VALUES": syntax error (code 1): , while compile: SELECT * ...

我也尝试将值项包装在另一个这样的选择中,SELECT * FROM (SELECT * FROM (VALUES('a'),('b'),('c'),('d'))) AS tbl但我仍然得到同样的错误。

完整的查询现在看起来像这样

SELECT *  FROM (select * from ( VALUES  (1458111312025), 
                                    (1455667200000), 
                                    (1455753600000), 
                                    (1455840000000), 
                                    (1455926400000), 
                                    (1456012800000), 
                                    (1456099200000), 
                                    (1456185600000), 
                                    (1456272000000), 
                                    (1456358400000), 
                                    (1456444800000), 
                                    (1456531200000), 
                                    (1456617600000), 
                                    (1456704000000), 
                                    (1456790400000), 
                                    (1456876800000), 
                                    (1456963200000), 
                                    (1457049600000), 
                                    (1457136000000), 
                                    (1457222400000), 
                                    (1457308800000), 
                                    (1457395200000), 
                                    (1457481600000), 
                                    (1457568000000), 
                                    (1457654400000), 
                                    (1457740800000), 
                                    (1457827200000), 
                                    (1457913600000), 
                                    (1458000000000), 
                                    (1458086400000))) i  LEFT JOIN (  
                SELECT  (osysdate- (osysdate % 86400000) ) interval, SUM(field004) totalval FROM onlineactivities WHERE field003 !=300000 and osysdate> 1455605711999 GROUP BY interval ) 
                onl ON i.'' = onl.interval;;

请注意,这在 sqlite 版本 3.8.10 的 sqlitestudio 中有效,但在 android kitkat 中无效(不确定其中的 sqlite 版本)可能是什么问题?

另外请查看这个问题,这是我正在尝试做的,但是使用 sqlite 和这个答案

4

1 回答 1

1

VALUES 语法从 SQLite 3.8.3 开始可用,并非在每个 Android 版本中都可用

为了与早期的 SQLite 版本兼容,您必须使用复合查询:

SELECT 1458111312025 UNION ALL
SELECT 1455667200000 UNION ALL
...

或者,将所有值放入临时表中。

于 2016-03-16T08:46:54.160 回答