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