이 SQL SELECT 쿼리는 내가 원하는 모든 행을 제공하지만 ORDER BY 절이 정의한 별칭과 함께 재생되지 않는 것 같습니다. 대신 id
하여 주문 만, avgrating
제 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 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
을 지정 시도했습니다. 아무것도 변하지 않았다.
별칭 대신 표현식 자체를 '주문'할 때 작동합니까? 예 : 'IFNULL (AVG (ratings.rating), 0) desc, id desc' – SlimsGhost
@SlimsGhost 그건 좋은 생각이야,하지만 방금 해봤는데 똑같은 일을한다. –
그런 경우, 현재 가지고있는 결과를 게시하여 "잘못된"정렬을 보여줄 수 있습니까? – SlimsGhost