HQL order by 子句不起作用

HQL order by clause doesn't work

select r,avg(ur.score) 
from UserResource ur 
join Resource r on ur.resourceId=r.id 
group by ur.resourceId 
order by avg(ur.score) desc

上面的查询结果应该return avg(ur.score) 顺序,但我得到的实际上是 r.id 顺序。如果我将查询更改为以下仅 select avg(ur.score) ,则结果按 avg(ur.score) 顺序排列。

select avg(ur.score) 
from UserResource ur 
join Resource r on ur.resourceId=r.id 
group by ur.resourceId 
order by avg(ur.score) desc

为什么第一个查询中的 order by 子句不起作用,如何解决?

您的查询似乎有问题,而不是顺序问题。

您正在尝试按不属于 select 语句的列进行分组。 作为 ur.resourceId=r.id,您可以尝试以下操作:

select r.id,avg(ur.score) 
from UserResource ur 
join Resource r on ur.resourceId=r.id 
group by r.id 
order by avg(ur.score) desc