6

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

我想像这样运行查询:

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

3 回答 3

18

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

更改日志

指示

于 2014-05-23T02:30:19.493 回答
1

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

"with w as (y) z" => "create temp view w as y;z"

"with w(x) as (y) z" => "create temp table w(x);insert into wy;z"

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

于 2013-12-27T19:08:00.490 回答
0

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

于 2013-09-03T13:09:23.510 回答