Mysql 减法返回空值
我试图通过减去该学生未通过的任何课程的学分值来更新学生的tot_cred,takes关系中的分数='F',或当前正在学习,takes关系中的分数为空 但是,上面的查询将符合此条件的任何学生的tot_cred设置为NULL,我无法解释原因Mysql 减法返回空值,mysql,sql,sql-update,Mysql,Sql,Sql Update,我试图通过减去该学生未通过的任何课程的学分值来更新学生的tot_cred,takes关系中的分数='F',或当前正在学习,takes关系中的分数为空 但是,上面的查询将符合此条件的任何学生的tot_cred设置为NULL,我无法解释原因 我很抱歉,如果以前有人问过这个问题,我试图搜索相关内容,但找不到许多与减法相关的问题。我是新来的。谢谢大家的帮助。在c.credits UPDATE student as s LEFT JOIN takes as t ON s.ID = t.ID L
我很抱歉,如果以前有人问过这个问题,我试图搜索相关内容,但找不到许多与减法相关的问题。我是新来的。谢谢大家的帮助。在
c.credits
UPDATE student as s
LEFT JOIN takes as t
ON s.ID = t.ID
LEFT JOIN course as c
ON t.course_id = c.course_id
SET s.tot_cred = s.tot_cred - c.credits
WHERE t.grade = 'F' OR t.grade IS NULL
您可以像@JW answer一样使用,也可以使用:
它适用于一个空值和一个F级,但还有3个空值出现。不过,我不认为是联合导致了这个问题。我将查看我的查询并尝试解决它。谢谢你在这个问题上的帮助!
set s.tot_cred = s.tot_cred - COALESCE(c.credits,0)
UPDATE student as s
LEFT JOIN takes as t
ON s.ID = t.ID
LEFT JOIN course as c
ON t.course_id = c.course_id
SET s.tot_cred = s.tot_cred - IFNULL(c.credits, 0)
WHERE t.grade = 'F' OR t.grade IS NULL