mysql根据出生日期计算年龄并且插入到已有记录中
毕业设计
1
-- 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
我的解答思路和尝试过的方法
我认为报错是因为默认插入的是全部的记录列表,包括还没有数据内容的;想知道怎么插入到已有记录的那里呢?
-
这种数据库的插入一般都是指的插入行,就算只指定一个字段,它也是插入一整行,没有指定的字段就全为空。 对已有的行进行修改,这个叫更新,要用update命令。 楼上这专家的sql我咋没看明白,从同一行的一个字段更新到另一个字段,咋还用上子查询了呢?
update info_feedback f set fd_age=ROUND(DATEDIFF(CURDATE(), fd_birthday)/365.2
-
fd_name字段不能为空吧 你这逻辑不对啊,应该是修改不是新增。
update info_feedback f set fd_age=( select ROUND(DATEDIFF(CURDATE(), fd_birthday)/365.2422) from info_feedback where id=f.id)
发表回复