SQL 정렬 두번 질문 채택완료
SELECT * FROM g5_member WHERE 1 ORDER BY mb_no ASC LIMIT 10
이렇게 mb_no로 먼저 정렬하고
또 위의 쿼리 결과를 또 mb_point DESC로 정렬하고 싶습니다.
이런 경우에는 어떻게 해야하나요?
SELECT * FROM g5_member WHERE 1 ORDER BY mb_no ASC, mb_point DESC LIMIT 10
이렇게 하니 mb_no로만 정렬되고 mb_point는 정렬이 안되네요.
답변 4개
질문이 잘못되었네요
mb_no를 정렬한후
정렬한 값에서
mb_point로 정렬한다..
위의 쿼리가 맞습니다
그런데, 정렬한후 다시 정렬하고 싶다에 누락된건 범위 입니다.
지금 숨은 의도가.. 아마도. 10개로 구성된 페이지 내에서 라는 말이 누락된거 같은데
그러면 페이지라는 한정된 값이 등장해야 하거든요
그럴경우엔
order by mb_no asc limit 10
으로만 추출한후
다시 mb_point로 정렬을 하고 싶은것으로 보여집니다.
그러면 서브쿼리화시킨후 재조회대상이 되면 됩니다.
select * from (
SELECT * FROM g5_member
WHERE 1 ORDER BY mb_no ASC LIMIT 10
) x
order by mb_point DESC
댓글을 작성하려면 로그인이 필요합니다.
... order by if( mb_no < 10, 0, 1), mb_point DESC limit 10
도 가능하지만 subquery 방식을 추천합니다.
댓글을 작성하려면 로그인이 필요합니다.
SELECT * FROM g5_member WHERE 1 ORDER BY mb_point DESC, mb_no ASC LIMIT 10
이렇게 해보세요..
답변에 대한 댓글 2개
두번째 기준으로 정렬이 됩니다.
1. mb_no로 정렬하면 동일한 값이 없으므로, mb_point 정렬은 의미가 없게 되구요..
2. mb_point 정렬 후 포인트가 동일한 경우, mb_no 순으로 정렬이 되는 겁니다.
원하시는걸 이해하지 못하겠네요??^^;;
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인