Oracle Query在其中一个条件为真时检索记录,但在两个条件都为真时不检索记录

时间:2012-02-18 01:45:48

标签: sql oracle conditional-operator

我有下表,我想要检索已经STUD_IDENGLISH的学生(SCIENCE)。如果他们已经两个 ENGLISH和SCIENCE,那么就不要检索。

所以期望的输出是101,102,104,106,107

该表实际上是一个视图,其中包含表STUD_INFO中的前两列,主题列来自STUD_INFO表中的嵌套表

SELECT groupid, 
       Stud_id, 
       NST.Name
  FROM STUD_INFO, 
       TABLE(SUBINFO) NST

任何人都可以帮我查询SQL查询吗?有趣的是我使用的时候 Subject = ENGLISH和Subject = Science它不会检索任何数据。

groupid Stud_id Subject
-------   -------   --------
1   101 ENGLISH
1   102 MATH
1   103 ENGLISH
1   103 SCIENCE
1   104 ENGLISH
1   104 MATH
1   105 PT
1   105 ENGLISH
1   105 SCIENCE
2   106 ENGLISH
2   107 SCIENCE
2   108 SCIENCE
2   108 ENGLISH

1 个答案:

答案 0 :(得分:4)

Subject = ENGLISH and Subject = SCIENCE说“主题需要同时是英语和科学 ”,这绝不是真的。

select stud_id from your_view
where subject in ('ENGLISH', 'SCIENCE')
group by stud_id
having count(subject) = 1

这对你有用吗?