UPDATE grade SET grade = (SELECT g.grade FROM grade_2 g WHERE grade.id = g.id)
* 查询grade表得到以下结果这sql明显是错的,SELECT g.grade FROM grade_2 g WHERE grade.id = g.id,由于两张表所对应的id并不是等同的,那么代表这句查询语句查出来的结果有可能是空值。如SELECT g.grade FROM grade_2 g WHERE g.id = 3。结果肯定是空值。换成这样就行了。
UPDATE grade ga SET ga.grade = (SELECT IF(count(*) = 0,ga.grade,g.grade) FROM grade_2 g WHERE ga.id = g.id)
很简单,少了个条件,g.grade is not null
既然补考的话那么只需要更新不及格的成绩就好,在最后面加上where grade<60