mysql根据出生日期计算年龄并且插入到已有记录中

业务扩展中增加了年龄字段,原来有出生日期字段
问题相关代码,请勿粘贴截图
-- c.增加年龄字段,并且由出生日期算出插入到表中
alter table info_feedback
add fd_age varchar(11)
after fd_birthday

insert into info_feedback(fd_age)
select ROUND(DATEDIFF(CURDATE(), fd_birthday)/365.2422)
from info_feedback
where id is not null
运行结果及报错内容

1364 - Field 'fd_name' doesn't have a default value, Time: 0.000000s

我的解答思路和尝试过的方法

我认为报错是因为默认插入的是全部的记录列表,包括还没有数据内容的;想知道怎么插入到已有记录的那里呢?

img

我想要达到的结果

fd_name字段不能为空吧
你这逻辑不对啊,应该是修改不是新增。

update info_feedback f set fd_age=(
select ROUND(DATEDIFF(CURDATE(), fd_birthday)/365.2422)
from info_feedback
where id=f.id)

这种数据库的插入一般都是指的插入行,就算只指定一个字段,它也是插入一整行,没有指定的字段就全为空。
对已有的行进行修改,这个叫更新,要用update命令。
楼上这专家的sql我咋没看明白,从同一行的一个字段更新到另一个字段,咋还用上子查询了呢?

update info_feedback f set fd_age=ROUND(DATEDIFF(CURDATE(), fd_birthday)/365.2422);