このSQL SELECTクエリは私に必要なすべての行を与えますが、ORDER BY句は定義したエイリアスと一緒に演奏されていないようです。 id
によってなぜこのSQLクエリは私のエイリアスで注文しないのですか?
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
、それだけ注文することによって発注。私は同様の質問に対する答えを見ていましたが、私の場合に役立つように私は何も飛び出さなかった。どのようにこれを解決するための任意のアイデアですか?より多くの情報を提供する必要があるかどうかを教えてください。
ありがとうございます!
EDIT:ここに結果データがあります。ナンセンスのプレースホルダーのテキストを赦してください。
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
EDIT 2:私はそれは私が望んでいた1だからORDER BY
句でcontent.id
を指定しようとしました。何も変わっていません。
エイリアスではなく式自体を '注文する 'ときに機能しますか?例えば(AVG(ratings.rating)、0)desc、id desc' – SlimsGhost
@SlimsGhostそれは良い考えですが、私はそれを試しただけで同じことをします。 –
その場合、現在の結果を投稿して「間違った」ソートを表示できますか? – SlimsGhost