HQL 按子句排序不起作用


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

上面的查询应以avg(ur.score)顺序返回结果,但实际上我所获得的是r.id顺序。如果将查询更改为仅选择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子句不起作用以及如何解决?

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

您正在尝试通过不属于选择语句的一部分进行分组。作为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