2条件在sql中必须为true

nfs0ujit  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(266)

这个问题在这里已经有答案了

mysql:如何选择具有特定值的组(6个答案)
10个月前关门了。
我有两张table。
学生
学生兴趣
表:学生

Id | Student Name
------------------
1  | John
2  | Alice

表:学生兴趣

Id | SId | Interest
------------------
1  | 1   | Mathematics
2  | 1   | Science
1  | 2   | Environment
2  | 2   | English
2  | 2   | Mathematics

这两个表与“学生兴趣”表中的外键相连
现在我想知道对“数学”和“科学”都感兴趣的学生的名字
我试过了

Select s.Name from Student s
Inner Join StudentInterest si
ON
s.Id = si.SId
Where si.Interest IN ('Mathematics' , 'Science')

但是它显示了两个学生因为两个学生都对“数学”感兴趣结果应该只有一个学生叫“约翰”

y3bcpkx1

y3bcpkx11#

如果你按学生分组,你只能选择像这样既有兴趣又有兴趣的学生

Select s.Name 
from Student s
Inner Join StudentInterest si ON s.Id = si.SId
Where si.Interest IN ('Mathematics' , 'Science')
group by s.Name
having count(distinct si.Interest) = 2

Select s.Name 
from Student s
Inner Join StudentInterest si ON s.Id = si.SId
group by s.Name
having sum(case when si.Interest = 'Mathematics' then 1 else 0 end) > 0
   and sum(case when si.Interest = 'Science' then 1 else 0 end) > 0

相关问题