gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 11:14:15 25 4
gpt4 key购买 nike

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

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;

它不是先按 avgating 排序,再按 id 排序,而是仅按 id 排序。我浏览了类似问题的答案,但没有什么对我的案子有帮助的。关于如何解决这个问题有什么想法吗?如果我应该提供更多信息,请告诉我。

谢谢!

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

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,因为那是我想要的。一切都没有改变。

最佳答案

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

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 进行分组和排序。我怀疑OP想要users.id。问题是这样的:

GROUP BY id
ORDER BY
avgrating DESC,
id DESC;

id 不明确。所有这些表(无论如何在我的架构中)都有一个 id 列。我不确定是否有标准方法来解决它,但 MySQL 似乎选择了 content.id 因为查询是 FROM content

解决方案是使 id 列明确。

GROUP BY users.id
ORDER BY
avgrating DESC,
users.id DESC;

Here's the result .

avgrating   username    id  userid
4 joe 1 1
2 jill 5 4
1 bob 4 3

关于mysql - 为什么此 SQL 查询不按我的别名排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40005399/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com