- 一张成绩表grade,里面有id、grade字段,
- 另一张是补考成绩表grade_2,字段为id、grade
- 本人想更新补考成绩到成绩表中,执行以下SQL语句后
UPDATE grade SET grade = (SELECT g.grade FROM grade_2 g WHERE grade.id = g.id)
* 查询grade表得到以下结果
- 为什么结果不是
- 求大神告知原因并写出正确的SQL语句。
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)