我有表Student(std_id,std_name),Subject(sub_id,sub_name)和一个映射表Sudent_Subject(std_id,sub_id)
想要获取所有学生的名单,只有主题是数学和科学,而不是除了这个科目或不低于给定的科目。
在这种情况下,我已经使用hibernate配置了上面的表。这是必需的POJO
Class Student {
private String std_id;
private String std_name;
List<Subject> lstSubject;
}
Class Subject {
private String sub_id;
private String sub_name;
List<Student> lstStudent;
}
是否可以编写HQL以获得所需的结果?另外,我们如何使用纯SQL实现此结果?
答案 0 :(得分:1)
另外,我们如何使用纯SQL实现此结果?
您可以使用HAVING
子句:
SELECT s.std_id, s.name
FROM Student s
JOIN Student_Subject ss
ON s.std_id = ss.std_id
JOIN Subject sb
ON sb.sub_id = ss.sub_id
GROUP BY s.std_id, s.name
HAVING COUNT(*) = 2
AND COUNT(CASE WHEN sb.sub_name IN ('Math', 'Science') THEN 1 END) = 2;