我有3张桌子,
-- table of selected_courses
student_id course_id
1 11
1 12
1 13
2 11
2 12
3 12
3 13
4 11
-- table of students
student_id name
1 Adam
2 Bill
3 Calvin
4 David
-- table of courses
course_id name
11 math
12 physics
13 chemistry
我想找到同时选择物理(12)和化学(13)的那些学生,在这种情况下,他们应该是亚当和卡尔文。
通常,我可以通过分组获得每个学生的课程记录
select * from selected_courses group by student_id;
那我怎么知道12和13都在学生组里呢?
顺便说一句,我正在使用mysql。
答案 0 :(得分:1)
使用聚合
select student_id from
selected_courses a
where course_id in (12,13)
group by student_id
having count(distinct course_id)=2
答案 1 :(得分:0)
使用相关子查询
select student_id, course_id
from tablename a where exists
(select 1 from tablename b where a.student_id=b.student_id and course_id in (12,13) having count(distinct course_id)=2)