SQL的HQL版本与group by联接

SQL的HQL版本与group by联接,第1张

SQL的HQL版本与group by联接

在HQL中,您可以尝试一下:

select band.name, max(vote.totalVotes)from Band band     join band.votes votegroup by band.nameorder by max(vote.totalVotes) desc

这是假设之间存在一个一对多的关联

Band
Votes
(实际上,提供对象模型HQL和/或标准API,因为要查询的对象模型工作时非常有用)。

以防万一,这是文档的相关部分:

[14.12。group

by子句](http://docs.jboss.org/hibernate/core/3.3/reference/en/html/queryhql.html#queryhql-
grouping)

返回聚合值的查询可以按返回的类或组件的任何属性进行分组:

select cat.color, sum(cat.weight), count(cat)from Cat catgroup by cat.colorselect foo.id, avg(name), max(name)from Foo foo join foo.names namegroup by foo.id

还可以使用Have子句。

select cat.color, sum(cat.weight), count(cat)from Cat catgroup by cat.colorhaving cat.color in (eg.Color.TABBY, eg.Color.BLACK)

如果基础数据库支持SQL函数和聚合函数,则它们的Have和order by子句中允许使用它们(即,MySQL中不支持)。

select catfrom Cat cat    join cat.kittens kittengroup by cat.id, cat.name, cat.other, cat.propertieshaving avg(kitten.weight) > 100order by count(kitten) asc, sum(kitten.weight) desc

group by子句和order
by子句都不能包含算术表达式。Hibernate当前也不会扩展分组的实体,因此,如果未聚合cat的所有属性,则无法按cat编写group。您必须明确列出所有未聚合的属性。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5027748.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-15
下一篇 2022-11-15

发表评论

登录后才能评论

评论列表(0条)

保存