如何检查GROUP生成的记录集中是否存在非字符串值?

时间:2019-03-06 07:34:53

标签: mysql sql

我有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。

2 个答案:

答案 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)