如何使用特定条件筛选结果

时间:2015-09-27 02:33:00

标签: sql sql-server select

我有2个表格,我想过滤某些条件。

  

表1   学生
  ID名称
   1 Del
  2标记
  3戴夫

     

表2   要求
  ID Stud_id要求已提交
  1 ---- 1 -------- ------------- REQ1 1
  2 ---- -------- 1 ------------- REQ2 0
  3 ---- -------- 2 ------------- REQ1 1
  4 ---- -------- 2 REQ2 ------------- 1
  5 ---- -------- 3 REQ1 ------------- 0
  6 ---- 3 -------- Req2 ------------- 0

我需要筛选出已完成要求的学生和那些要求不完整的学生。

  

输出1:完成要求的学生    ID名称
  2马克

           

输出2:要求不完整的学生   ID名称
  1 Del
  3戴夫

2 个答案:

答案 0 :(得分:1)

您可以使用existsnot exists执行此操作。完成要求:

select s.*
from students s
where not exists (select 1
                  from requirements r
                  where r.stud_id = s.id and r.isSubmitted = 0
                 );

如果未完成,请改用exists

答案 1 :(得分:0)

我希望这会有所帮助

检索完成要求的学生:

select * from student s where s.ID in ((Select stud_id from requirements r 
where r.req1=1 and r.req2=1))

检索有不完整要求的学生:

select * from student s where s.ID not in ((Select stud_id from requirements r 
where r.req1=1 and r.req2=1))