首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么此SQL查询不按我的别名排序?

为什么此SQL查询不按我的别名排序?
EN

Stack Overflow用户
提问于 2016-10-13 02:02:35
回答 1查看 72关注 0票数 0

这个SQL SELECT查询提供了我想要的所有行,但是ORDER BY子句似乎没有与我定义的别名配合使用。

代码语言:javascript
复制
SELECT
    IFNULL(AVG(ratings.rating), 0) AS avgrating,
    users.username,
    content.*
FROM content
LEFT JOIN ratings
    ON ratings.contentid = content.id
LEFT JOIN users
    ON users.id = content.userid
GROUP BY id
ORDER BY
    avgrating DESC,
    id DESC;

它不是先按avgrating排序,再按id排序,而是只按id排序。我查看了类似问题的答案,但没有一条对我的情况有帮助。对如何解决这个问题有什么想法吗?如果我应该提供更多信息,请让我知道。

谢谢!

编辑:这是结果数据。请原谅无意义的占位符文本。

代码语言:javascript
复制
avgrating   username    id  title       content category    userid
3.0000      jijoij      11  nuunun      "foo"   0           2
0.0000      jijoij      10  regreg      "foo"   3           2
0.0000      jijoij      9   fefefe      "foo"   3           2
0.0000      testkonto   8   i34jt4jt    "foo"   3           4
0.0000      testkonto   7   oouo        "foo"   3           4
0.0000      testkonto   6   oyouuoouo   "foo"   3           4
5.0000      testkonto   5   oyouuouo    "foo"   3           4
1.0000      testkonto   4   jijijijiji  "foo"   3           4
0.0000      testkonto   3   fgreg       "foo"   3           4
0.0000      testkonto   2   tbtrb       "foo"   3           4
3.6667      jijoij      1   gergj       "foo"   1           2

编辑2:我尝试在ORDER BY子句中指定content.id,因为这正是我想要的。一切都没有改变。

EN

回答 1

Stack Overflow用户

发布于 2016-10-13 02:22:58

I put this together in SQLFiddle和它揭示了这个问题。

代码语言:javascript
复制
avgrating   username    id  userid
5           joe         1   1
4           joe         2   1
3           joe         3   1
2           jill        5   4
2           jill        6   4
1           bob         4   3

它是按content.id分组和排序的。我怀疑特工想要的是users.id问题是:

代码语言:javascript
复制
GROUP BY id
ORDER BY
    avgrating DESC,
    id DESC;

id不明确。所有这些表(至少在我的模式中)都有一个id列。我不确定是否有标准的方法来解决这个问题,但MySQL似乎选择了content.id,因为查询是FROM content

解决方案是使id列明确。

代码语言:javascript
复制
GROUP BY users.id
ORDER BY
    avgrating DESC,
    users.id DESC;

Here's the result

代码语言:javascript
复制
avgrating   username    id  userid
4           joe         1   1
2           jill        5   4
1           bob         4   3
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40005399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档