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

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

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

回复

共2条回复 我来回复
  • 毕业设计驿站
    这个人很懒,什么都没有留下~
    评论

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

    update info_feedback f set fd_age=ROUND(DATEDIFF(CURDATE(), fd_birthday)/365.2
    
    0条评论
  • 源码客栈
    这个人很懒,什么都没有留下~
    评论

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

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

发表回复

登录后才能评论