我正在练习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秒]
您应该在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;