有这样一个需求,如下表所示,要查询同时满足dept_Id 和 course_id的条件的所有数据,但是这个数据可能有两组。
例如当查查询当dept_id=20 并且 course_id=100003的数据
和dept_id=3并且 course_id=100002
如图所示,要根据下表的数据查询上表的值。teacher_Id为169时对应两组数据。
这样的查询又不能group分组,也不能单独查询dept_id in (3,20) and course_id in (100002,100003)
查询查出来的数据是不准确的。
所以这里要用or来拼接查询。
我的实现方式是:
SELECT pro.teacher_project_id AS id, pro.dept_id, pro.course_id FROM t_teacher_project AS pro WHERE pro.teacher_project_id IN ( SELECT t_teacher_project.teacher_project_id FROM t_teacher_project WHERE t_teacher_project.dept_id = 3 AND t_teacher_project.course_id = 100002 ) OR pro.teacher_project_id IN ( SELECT t_teacher_project.teacher_project_id FROM t_teacher_project WHERE t_teacher_project.dept_id = 20 AND t_teacher_project.course_id = 100003 ) OR pro.teacher_project_id IN ( SELECT t_teacher_project.teacher_project_id FROM t_teacher_project WHERE t_teacher_project.dept_id = 20 AND t_teacher_project.course_id = 100002 )
这样,如果再有多个分组也后面直接拼接or就行了,or后面的分组的条件。
这样就可以实现将条件进行分组查询了。
我这种写法可能不太简介,如果有更好的写法欢迎留言指教,非常感谢!