首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在FROM中为HQL使用子查询

在FROM中为HQL使用子查询
EN

Stack Overflow用户
提问于 2015-08-07 14:35:20
回答 1查看 50关注 0票数 0

下面的SQL正在执行我想要的操作(简化):

代码语言:javascript
复制
SELECT tcd.Name, MAX(if(tcd.Name = 'Some Name', tcr.Value, NULL)) as 'Value'
FROM TestCaseData tcd, TestCaseDataResult tcr, PVRTable pvr,
(select MAX(sel.PK) as PK from TestCaseDataResult sel GROUP BY sel.PVR_FK, sel.TCD_FK) selector
WHERE tcr.PK = selector.PK AND tcr.TCD_FK = tcd.PK AND tcr.PVR_PK = pvr.PK
GROUP BY pvr.PK
ORDER BY pvr.PK

需要选择器表,因为集合可以有几条具有相同sel.PVR_FK, sel.TCD_FK的记录,在这种情况下,MAX(...)表达式将选择更大的值,但我需要使用更大的PK (最后一个值)的值。

我想要HQL而不是SQL。出于显而易见的原因,我试图避免在代码中使用原始SQL。

看起来HQL不支持FROM中的子查询。我觉得我可以重写它,这样它就可以在没有子查询的情况下工作,但是我很难找到正确的解决方案。

我也很担心性能,所以我不想因为效率低下而在SELECT中有子查询。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-07 14:38:50

我相信你可以试试这个

代码语言:javascript
复制
SELECT tcd.Name, MAX(if(tcd.Name = 'Some Name', tcr.Value, NULL)) as 'Value')
FROM TestCaseData tcd, TestCaseDataResult tcr, PVRTable pvr
WHERE 
    tcr.PK IN(select MAX(PK) from TestCaseDataResult GROUP BY PVR_FK, TCD_FK) 
    AND tcr.TCD_FK = tcd.PK 
    AND tcr.PVR_PK = pvr.PK
GROUP BY pvr.PK
ORDER BY pvr.PK

http://docs.jboss.org/hibernate/core/3.3/reference/en/html/queryhql.html#queryhql-subqueries

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31880338

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档