根据递归查询的结果创建一个表(带语句)

问题描述 投票:1回答:1

我想根据SQLite中的递归查询结果创建一个新的(持久性)表。例如,让我们创建一个具有(n, fct)列的表,其中n表示自然数,fct表示其阶乘:

-- factorial of n = 0, 1, ..., 5
WITH RECURSIVE fact_i (n, fct) AS (
     VALUES (0, 1)
     UNION ALL
     SELECT n+1, fct * (n+1) FROM fact_i
     WHERE n < 5)
SELECT * FROM fact_i;

导致]

0|1
1|1
2|2
3|6
4|24
5|120

但是,我想将结果存储在持久性表中,例如factorials

我尝试过

CREATE TABLE factorials (n, fct) AS
WITH RECURSIVE fact_i (n, fct) AS (
     VALUES (0, 1)
     UNION ALL
     SELECT n+1, fct * (n+1) FROM fact_i
     WHERE n < 5)
SELECT * FROM fact_i;

WITH RECURSIVE fact_i (n, fct) AS (
     VALUES (0, 1)
     UNION ALL
     SELECT n+1, fct * (n+1) FROM fact_i
     WHERE n < 5)
CREATE TABLE factorials (n, fct) AS
SELECT * FROM fact_i;

但是都导致语法错误。有没有办法在SQLite中创建这样的表?

我想根据SQLite中的递归查询结果创建一个新的(持久性)表。例如,让我们创建一个具有(n,fct)列的表,其中n表示自然数,fct其阶乘:...

sqlite recursive-query with-statement
1个回答
0
投票

是,有可能(用附加的SELECT * FROM ()包装:

© www.soinside.com 2019 - 2024. All rights reserved.