2012-12-05 22 views
1

我在數據庫中有兩個表:更新MySQL中的列與另一個表的幫助

第一個表:學生

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); 

,我得到一個錯誤信息:ERROR 1452(23000):不能添加或更新子行,外鍵約束失敗

你能幫助我在的地方我錯了或者有其他解決方案來填寫欄。 在此先感謝

回答

3

試試這個::

Update Admission 
inner join Students on (Students.school_id = Admission.school_id) 
    set Admission.class_id = Students.class_id 
+0

@Karan:非常歡迎你 –