1

我在数据库中有两个表:

第一桌:学生

Field           Type          Null    Key   Default
id              int(11)       NO      PRI   NULL
class_id        int(11)       NO      PRI   NULL
admission_id    int(11)       NO      PRI   NULL
school_id       int(11)       NO      PRI   NULL
name            varchar(64)   YES           NULL
admin_date      datetime      YES           NULL

二表:录取

Field           Type          Null    Key   Default
id              int(11)       NO      PRI   NULL
class_id        int(11)       NO      PRI   1
school_id       int(11)       NO      PRI   NULL
name            varchar(64)   YES           NULL
admin_date      datetime      YES           NULL

现在我想将我稍后介绍的Admission表的class_id列填写到表中。默认情况下,所有 class_id 都设置为 1,因此需要根据学生进行更新。我在做什么:

   Update Admission
   set class_id = (select class_id from Students where Students.school_id = Admission.school_id);

我收到一条错误消息:错误 1452(23000):无法添加或更新子行:外键约束失败

你能帮我解决我出错的地方或任何其他替代解决方案来填写列吗?提前致谢

4

1 回答 1

3

试试这个 ::

Update Admission
inner join Students on (Students.school_id = Admission.school_id)
   set Admission.class_id = Students.class_id
于 2012-12-05T13:39:49.783 回答