Select "answer"
from 'Details'
where "question" like 'child'
AND "subject" IN (select "subject"
from 'Details'
where "question" like 'child'
AND "answer" = "M" and "test" ="1");
表结构为:
Subject Test Survey Question answer
----------------------------------------------------
rahul 1 one childimmunization Yes
rahul 1 one childgender M
Jyothi 1 one childimmunization No
Jyothi 1 one childgender F
Chikku 1 one childimmunization No
Chikku 1 one childgender M
最佳答案
将两行或多行的值收集到单行的列中的最正确的 SQL 方法是将表与其自身连接(一次或多次)。它比使用子查询更简单、更方便。
因此,如果您可以在 Hibernate 中创建从Deatils
到Details
的循环关联 - 这将是最简单的解决方案。但我想这是不可能的,因为 Hibernate 已经知道在连接中使用相同实体两次的问题(和开放任务) - 详细信息是 here和 here .但是根据this answer您仍然可以尝试使用 Hibernate
DetachedCriteria
作为子查询来制作与原始 SQL 非常相似的内容。
我会尝试建议这段代码,但尚未经过测试:
DetachedCriteria subjectsWithBoys = DetachedCriteria.forClass(Details.class)
.setProjection(Property.forName("subject"))
.add(Restrictions.eq("question", "childgender"))
.add(Restrictions.eq("answer", "M"))
.add(Restrictions.eq("test", "1"));
Criteria criteria = getSession().createCriteria(Details.class)
.setProjection(Property.forName("answer"))
.add(Property.forName("subject").in(subjectsWithBoys))
.add(Restrictions.eq("question", "childimmunization"))
.add(Restrictions.eq("test", "1"));
希望您能够轻松使用它,并且不会因为如此琐碎的任务而遇到 Hibernate 中的另一个未解决问题。
关于sql - 以下 SQL 查询的等效条件查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18560161/