SQLite是否支持公用表表达式?

时间:2013-09-03 13:02:37

标签: sql sqlite common-table-expression

SQLite是否支持公用表表达式?

我想运行这样的查询:

with temp (ID, Path) 
as (
  select ID, Path from Messages
) select * from temp

3 个答案:

答案 0 :(得分:13)

从Sqlite版本3.8.3开始,SQLite支持公用表表达式。

Change log

Instructions

答案 1 :(得分:1)

另一种解决方案是在您的应用程序中集成“CTE到SQLite”转换层:

“w为(y)z”=> “创建临时视图w为y; z”

“w(x)as(y)z”=> “创建临时表w(x);插入到w y; z”

作为一个(丑陋,缺乏,但有效)的例子: http://nbviewer.ipython.org/github/stonebig/baresql/blob/master/examples/baresql_with_cte_code_included.ipynb

答案 2 :(得分:0)

SQLite不支持CTE,窗口函数或任何类似的东西。但是,您可以使用 sqlite_create_function()通过SQLite API将它们注册到数据库中来编写您可以在SQLite中调用的自己的用户函数。您可以在数据库中注册它们,然后可以在自己的应用程序代码中使用它们。您可以创建一个聚合函数,该函数将根据各个列值执行一系列平均值的总和。对于每个值,调用一个步骤类型的回调函数,它允许您对数据执行一些计算,并且还有一个用于保存状态数据的指针。