【发布时间】:2012-11-11 20:31:54
【问题描述】:
我正在使用 Hibernate,我想从从两个不同的子查询中获取的两个值中获得减法,但我遇到了以下错误:
SQLGramarEception:无法执行查询
SELECT termQuery.term.id,
(SELECT COALESCE(MIN(termResult2.position),101) FROM termQuery2.results termResult2 WHERE termResult2.url.hostname MEMBER subscription.account.domains) as **prevPosition**,
(SELECT COALESCE(MIN(termResult.position),101) FROM termQuery.results termResult WHERE termResult.url.hostname MEMBER subscription.account.domains) as **currentPosition**,
prevPosition - currentPosition as change --<<<<<<
FROM TermSubscription subscription, TermQuery termQuery, TermQuery termQuery2
WHERE subscription.account.id=1197
AND termQuery.term=subscription.term
AND termQuery.provider.id=2
AND termQuery.queryDate.yearWeek = '201242'
AND termQuery2.term=termQuery.term
AND termQuery2.provider.id=termQuery.provider.id
AND termQuery2.queryDate.yearWeek = '201241'
ORDER BY subscription.term.id, termQuery.queryDate.yearWeek
我知道不可能像那样减去这两个值,但我不知道该怎么做。那么,会有什么办法呢? 谢谢
【问题讨论】:
-
我会重做它,加入子选择(即每个子选择以获取所有人的位置,在人员 ID 上使用 join ON 子句),以便您直接为他们获取值,然后在 SELECT 子句中计算你想要的值。
-
@Kickstart:HQL中没有ON子句,子查询只能用在HQL中的select和where子句中。
标签: mysql hibernate hql subquery