SQL JOIN查询求助:筛选未注册任何课程的学生
未注册课程学生的JOIN查询解决方案
正确SQL代码
select STUDENT.StudentID , STUDENT.StudentName from db1.ncc.STUDENT left join db1.ncc.REGISTRATION on STUDENT.StudentID = REGISTRATION.StudentID where REGISTRATION.StudentID IS NULL
原代码错误说明
你原语句里的WHERE REGISTRATION.StudentID <> STUDENT.StudentID逻辑不成立:
- LEFT JOIN后,未匹配到注册记录的学生,其Registration表的所有字段都会是NULL
- NULL与任何值进行比较运算(包括不等于
<>)都会返回未知结果,无法被WHERE条件筛选 - 要筛选未注册的学生,只需判断关联字段
REGISTRATION.StudentID是否为NULL即可
内容的提问来源于stack exchange,提问作者sansievar
相关产品推荐
相关产品推荐

