SQL语句where子句中的case语句

狡猾的

我想在where子句中放入一个条件条件,即如果semester column第二张表为null,则需要过滤where列semester is null如果没有,我需要在其他条件下过滤数据。

//如果学期为null,则需要查询如下:

select * from tbl_courses tc
    left join tbl_exams te on tc.courseID = te.courseID
    where te.gradeID=10 and 
    te.semester is null

//如果学期不为null,则查询应为

select * from tbl_courses tc
left join tbl_exams te on tc.courseID = te.courseID
where te.gradeID=10 and 
te.semester is null

对于此要求,我如何从sql本身编写单个查询,如下所示:

select * from tbl_courses tc
left join tbl_exams te on tc.courseID = te.courseID
where te.gradeID=10 and 
(case when te.semester is null 
  then te.semester is null
  else te.semester = tc.semester END)  

无论如何这是不对的,请帮帮我

佐哈尔·皮莱德(Zohar Peled)

假设您的第二条选择语句应为:

select * from tbl_courses tc
left join tbl_exams te on tc.courseID = te.courseID
where te.gradeID=10 
and te.semester = tc.semester

尝试这个:

select * 
from tbl_courses tc
left join tbl_exams te on tc.courseID = te.courseID
where te.gradeID=10 
and (
     te.semester = tc.semester
     OR te.semester is null
)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章