【问题标题】:Subtract subselect values in HQL减去 HQL 中的子选择值
【发布时间】: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


【解决方案1】:

仅选择其他 3 个值,并在对查询结果进行迭代时,从 Java 中的 prevPosition 中减去 currentPosition

【讨论】:

  • 感谢您的帮助,但我不确定该解决方案是否适合我的问题,因为我的目标是按更改最多的位置排序结果 - 一旦我拥有它 - 然后将获取的值存储在其对应的波乔。这就是为什么我不想乱用java中获得的数据。
  • 你也可以用Java排序。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-12
  • 2012-02-05
相关资源
最近更新 更多