我试图运行一个 hql 查询,该查询汇总(总和)在特定帐户上进行的交易数量,我不需要 group by,因为我的 where 子句具有特定的帐户过滤器(其中 account = :account)
但是,我确实希望仅在聚合值小于/大于某个给定值时才返回聚合值。当我在没有'group by'的where子句之后添加'have'时,我得到一个错误 - 意外标记:有
在本机 sql 中,我成功添加了没有 group by 的“有”
关于如何使其与 hql 一起工作的任何想法?
多谢
数据库不允许您将分组列与非分组和非聚合列混合的原因是,对于非分组/非聚合列,它必须为每组选择一行的值,但不知道如何选择一个。
如果你不在乎,那么你可以把它放在一边,如果没关系,因为它们都是一样的,你也可以按它们分组。
它不是 hql,但如果您有本机查询,请像这样运行它:
Query query = session.createSQLQuery("select, *** ,... blah blah")
//set If you need
query.setParameter("myparam", "val");
List result = query.list();
在我看来,这是无稽之谈。“拥有”是针对“分组依据”结果的条件完成的。如果你不分组,那么它没有多大意义。
我会说HQL做不到。可能 Hibernate 程序员没有想到这种情况,因为他们认为它不重要。
无论如何,你不需要它。
如果它是一个简单的查询,那么您可以在您的 java 代码中决定是想要结果还是不需要它。
如果它在子选择中,那么您可以使用主选择中的 where 条件来解决问题。
如果您认为确实有必要,请您举一个更具体的例子。