SQL:唯一的访问查询符合多个标准

时间:2013-12-03 13:23:28

标签: sql date ms-access-2010 between

我有一个包含 studentID 课程 start_date 列的表格,其中studentID是唯一的。 我想写一个查询,以便那些没有参加过2010年开学日期的课程的学生出现。我的问题是,即使他们在2010年参加了一门课程,我似乎也会回到所有已经上过2010年课程的学生。

SELECT DISTINCT studentID
FROM attendant
WHERE Startdatum NOT BETWEEN #1/1/2010# AND #12/31/2010#

我真正想要的是;如果它包含某个值,有没有办法不显示行?怎么样?

某种子查询?

2 个答案:

答案 0 :(得分:2)

应该是这样的:

SELECT DISTINCT studentID FROM attendant
WHERE studentID NOT IN
(SELECT DISTINCT studentID FROM attendant
WHERE Startdatum BETWEEN #1/1/2010# AND #12/31/2010#)

答案 1 :(得分:1)

回答这个问题的一个好方法是使用having子句:

SELECT studentID
FROM attendant
GROUP BY studentID
HAVING sum(iif(Startdatum BETWEEN #1/1/2010# AND #12/31/2010#, 1, 0)) = 0;

having子句计算每个学生在该时间范围内所学的课程数量。如果有,则过滤器失败。