sql将一段时间内的连续日期保存到表中出现error

问题遇到的现象和发生背景

SQL生成一段时间内的日期,好像是存储在临时表的,可以查询显示,但是不能保存到新表中,请问有什么代码可以保存呢?

问题相关代码,请勿粘贴截图

生成的一段时间内的连续日期,可以select看到日期,但是将此保存到已有表或者保存到新表都报错

  • 可以查询连续日期的sql代码(结果可以正常显示):
    WITH RECURSIVE cte (d) AS
    (SELECT '2021-01-04'
    UNION ALL
    SELECT d + INTERVAL 1 DAY
    FROM cte
    WHERE d + INTERVAL 1 DAY <= '2021-01-09')

SELECT *
FROM cte
ORDER BY cte.d;

  • 想要将连续的日期保存在新表中,发现报错,代码如下
    (1)insert into已有表table3,只有一个字段date,发生报错
    WITH RECURSIVE cte (d) AS
    (SELECT '2021-01-04'
    UNION ALL
    SELECT d + INTERVAL 1 DAY
    FROM cte
    WHERE d + INTERVAL 1 DAY <= '2021-01-09')

INSERT into table3(date) -- 结果保存
select *
from cte

报错为:

1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INSERT into table3(date)
select d
from cte' at line 7
时间: 0.099s

(2)尝试保存到新表table2中,发生报错
WITH RECURSIVE cte (d) AS
(SELECT '2021-01-04'
UNION ALL
SELECT d + INTERVAL 1 DAY
FROM cte
WHERE d + INTERVAL 1 DAY <= '2021-01-09')

CREATE table table2 as -- 结果保存
select *
from cte

报错为:

1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CREATE table table2 as -- 结果保存
select *
from cte' at line 7
时间: 0.096s

运行结果及报错内容
我的解答思路和尝试过的方法 、

尝试了多种方式保存结果(已有表/新表)还是报错

我想要达到的结果

将一段时间内的连续日期保存到表中,之后方便和其他日期的数据join

可以的,只是顺序要换一下,CTE后面只能跟select

insert into table_name 
WITH RECURSIVE cte (d) AS
(SELECT '2021-01-04'
UNION ALL
SELECT d + INTERVAL 1 DAY
FROM cte
WHERE d + INTERVAL 1 DAY <= '2021-01-09')
select * from cte

语法错误
INSERT into table3(列名) values (值)
或者其实你想用的是select into的语法?

如果保存的表已经存在,就用insert into tablename (columnname,...) values (value1, ....)
如果需要保存在新表中,就直接select colums, ... from tablename into newtablename

你在查询得时候直接插入到新建得表不就可以了吗