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
SELECT * FROM g5_member WHERE 1 ORDER BY mb_point DESC, mb_no ASC LIMIT 10
이렇게 해보세요..
질문이 이해가 안되네요
mb_no 1~10을 포인트 순으로 정렬한다는 말인가요?
... order by if( mb_no < 10, 0, 1), mb_point DESC limit 10
도 가능하지만 subquery 방식을 추천합니다.