我在我的数据库上遇到这个查询有点麻烦:
SELECT si.*, s.id, r.student_id, r.student_initial,
SUM(( IFNULL(rl.logout_time, r.login_time) - r.login_time)/3600) AS hours,
COUNT(r.student_id)AS attendance
FROM Staff_Log.SI_List si
LEFT JOIN SI_Program.Sessions s ON s.si_id=si.id
JOIN SI_Program.Sessions_Plans p ON s.plan_id=p.id
JOIN SI_Program.Student_Roster r ON s.id=r.session_id
JOIN SI_Program.Student_Roster_Logout rl ON r.id=rl.id
WHERE si.active=1
GROUP BY si.id, r.student_id
ORDER BY si.SI_Name, s.id, r.student_id ASC
我的问题是,Student_Roster上打开的学生(在Student_Roster_Logout中匹配注销时间为NULL)导致SUM返回不需要的值。我的目标是让SUM忽略rl.logout_time为NULL的值。
我认为IFNULL()
对我有用,但我显然不明白这个功能是如何运作的。
答案 0 :(得分:0)
如果要检查某些列的值是否为NULL,可以使用:
some_column IS NULL
如果你想检查它是否为空:
some_column = ''