1

假设我们有这样的时间表

course    day

  A       MONDAY

  A       WEDNESDAY

  B       MONDAY

  C       WEDNESDAY

我的问题是,我如何选择周一和周三的课程?

谢谢

4

2 回答 2

2

这种类型的问题称为关系除法。

SELECT  course
FROM    tableName
WHERE   day IN ('Monday', 'Wednesday')
GROUP   BY course
HAVING  COUNT(*) = 2

该解决方案比使用连接灵活得多,因为即使您有其他条件,查询的结构也不会改变。如果要搜索三个值怎么办?你会提供另一个加入吗?那么在这个查询中,只有值会改变,

其他来源:

于 2013-02-01T07:31:59.153 回答
0

用于示例查询执行的小提琴链接

create table schedule (course varchar2(10),day varchar2(20));
insert into schedule values('A','MONDAY');
insert into schedule values('A','WEDNESDAY');
insert into schedule values('B','MONDAY');
insert into schedule values('C','WEDNESDAY');

select s1.course
 from 
  schedule s1,schedule s2 
 where 
  s1.course=s2.course 
 AND
  s1.day='MONDAY'
 AND
  s2.day='WEDNESDAY';

输出

| COURSE |
----------
|      A |
于 2013-02-01T06:32:38.927 回答