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
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