使用通用表表示结果插入表

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

我正在练习SQL,并尝试获取最后一条记录并添加新记录,该记录增加了year和id。我知道可以更轻松地完成此操作,但我正在尝试了解如何使用CTE的想法。先感谢您。

我遇到语法错误。使用MySQL 8.0

WITH cte_0 (id,first_name,last_name,age,date_of_age) as (
select * from sales order by age desc limit 1
), 
cte_1 (id,first_name,last_name,age,data_of_age) as (
select id + 1 as id,first_name,last_name,age +1 as age, DATE_ADD(date_of_age ,INTERVAL 1 YEAR) as data_of_age from cte_0
)
insert into sales (id,first_name,last_name,age,data_of_age) select id,first_name,last_name,age,data_of_age from cte_1
;

语法错误:错误代码:1064。检查与您的MySQL服务器版本相对应的手册以获取正确的语法,以在“插入销售(id,first_name,last_name,age,data_of_age),选择id,first_name”附近使用第7行0.000秒]

mysql sql mysql-error-1064
1个回答
0
投票

您应该在INSERT语句中使用CTE:

insert into sales (id,first_name,last_name,age,data_of_age)
WITH cte_0 (id,first_name,last_name,age,date_of_age) as (
select * from sales order by age desc limit 1
), 
cte_1 (id,first_name,last_name,age,data_of_age) as (
select id + 1 as id,first_name,last_name,age +1 as age, DATE_ADD(date_of_age ,INTERVAL 1 YEAR) as data_of_age from cte_0
) 
select id,first_name,last_name,age,data_of_age from cte_1;
© www.soinside.com 2019 - 2024. All rights reserved.