oracle - 使用 Hibernate 和 Oracle 仅选择那些与参考表中所有给定条件匹配的记录
问题描述
我有表 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 来实现这个结果?
解决方案
另外,我们如何使用纯 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;
推荐阅读
- python - TypeError:post() 缺少 1 个必需的位置参数:FastApi 中的“路径”?
- php - Youtube API 获取 Livestream scheduledStartTime
- javascript - 如何解决 nodemon 在 npm 中找不到 | 运行服务器时发生
- c++ - 如何使用 g++ 使用着色器编译 SFML 程序
- python - Tkinter 绑定仅单击画布而不单击对象
- c++ - Memcpy unique_ptr 到向量
- matlab - Matlab可以标记一个轴不是从零开始吗?
- javascript - 我的 octacon 出现在字段顶部而不是旁边
- reactjs - 如何将 Github GraphQL API 提交响应映射到 react-bootstrap Cards?
- excel - 如果满足条件VBA,将部分单元格提取到另一个单元格