我有三张记录学生的表格:

课程记录:

地图学生和课程:

我想从table std_course获取记录,其中student作为1,2,3使用查询
select course_id from std_course where std_id in (1,2,3) group by course_id它将course_id作为1返回给我,但在这里,std_id=4也存在于course_id=1中,我需要选择course_id,其中std_id仅为1,2,3
发布于 2019-11-14 06:43:25
您可以使用sum()和select case,std_id上面的3将是0
select * from (
select sum(case when std_id in (1, 2, 3) then 1 else 0 end) tot
, course_id
from std_course
group by course_id) t1
where t1.tot <= 3发布于 2019-11-14 06:50:31
您可以使用join尝试这样的方法:
select * from std_course left outer join course on course.id= std_course.course_id where std_id <=3发布于 2019-11-14 08:59:24
@ϻᴇᴛᴀʟ回答的查询中的更改后,为我工作的查询是:
select * from ( select sum(case when std_id in (1,2,3) then 1 else -1 end) tot , course_id from std_course group by course_id) t1 where t1.tot = 3https://stackoverflow.com/questions/58850790
复制相似问题