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
我正在尝试通过减去学生失败的任何课程的学分值来更新学生中的tot_cred,成绩为关系='F',或正在服用,考试成绩等级为IS NULL。
但是,对于符合此条件的学生而言,上面的查询将tot_cred设置为NULL,我无法弄清楚原因。
我很抱歉,如果之前已经提出这个问题,我会尝试搜索相关的内容,但却找不到与减法相关的许多问题。我是stackoverflow的新手。谢谢大家的帮助。
答案 0 :(得分:3)
在COALESCE
c.credits
set s.tot_cred = s.tot_cred - COALESCE(c.credits,0)
答案 1 :(得分:1)