用于查找标记为多行的{s}查询

时间:2016-03-29 07:23:59

标签: mysql sql oracle10g

我有一张学生桌,结构如下。

StudentId    StudentName     SubjectId
     123         Lina              1
     456         Andrews           4
     123         Lina              3 
     123         Lina              4
     456         Andrews           5

需要编写一个查询来获取studentId,其中subjectid等于1,3且studentid不等于4

Select studentId from student  where subject Id='1' and SubjectId ='3' and     
subjectId ='4' .

输出studentId应为123

但它没有成功。任何帮助表示赞赏

3 个答案:

答案 0 :(得分:2)

最简单的方法是

select StudentId from student
where SubjectId in (1,3,4)
group by StudentId
having count(distinct SubjectId) = 3

答案 1 :(得分:2)

尝试分组:

Select studentId 
from student  
where subject_Id in ('1', '3', '4')
group by studentId 
having count(distinct subject_Id) = 3

注意:如果('1', '3', '4')字段的类型为(1, 3, 4),您可以考虑将subject_Id更改为int

注意2:distinct内的count关键字应该用于subject_Id每个studentId值{。}}。

答案 2 :(得分:0)

您只能使用1个主题ID,因为您的查询必须使用或代替和  并且不要使用单一课程

从学生中选择studentId,其中学科ID = 1或SubjectId = 3或
subjectId = 4。

尝试一次