假设我们有这样的时间表
course day
A MONDAY
A WEDNESDAY
B MONDAY
C WEDNESDAY
我的问题是,我如何选择周一和周三的课程?
谢谢
这种类型的问题称为关系除法。
SELECT course
FROM tableName
WHERE day IN ('Monday', 'Wednesday')
GROUP BY course
HAVING COUNT(*) = 2
该解决方案比使用连接灵活得多,因为即使您有其他条件,查询的结构也不会改变。如果要搜索三个值怎么办?你会提供另一个加入吗?那么在这个查询中,只有值会改变,
其他来源:
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 |