Sqlite 从递归查询的结果创建表(with语句)

Sqlite 从递归查询的结果创建表(with语句),sqlite,recursive-query,with-statement,Sqlite,Recursive Query,With Statement,我想根据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 fa

我想根据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;
但是,我希望将结果存储在一个持久表中,比如阶乘

我试过了

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;

但这两种方法都会导致语法错误。
有没有办法在SQLite中创建这样一个表?

是的,可以使用附加的SELECT*FROM进行包装:


第9行末尾的最后s是什么?@AlQuemist子查询别名,但子查询部分可以跳过,请检查修订版
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;
CREATE TABLE factorials AS
SELECT *
FROM (
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) s;
CREATE TABLE factorials 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;