MySQL的条件分组查询SQL语句写法
程序员文章站
2022-03-09 10:38:48
...
有这样一个需求,如下表所示,要查询同时满足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后面的分组的条件。
这样就可以实现将条件进行分组查询了。
我这种写法可能不太简介,如果有更好的写法欢迎留言指教,非常感谢!
上一篇: 详解MongoDB中的日志模块
下一篇: 继续软件行业部分开发人员毛病的话题