SQL 정렬 두번 질문

SQL 정렬 두번 질문

QA

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

이렇게 해보세요..

정렬은 기본 규칙은 첫번째로 정렬 후 동일한 값일때,
두번째 기준으로 정렬이 됩니다.

1. mb_no로 정렬하면 동일한 값이 없으므로, mb_point 정렬은 의미가 없게 되구요..
2. mb_point 정렬 후 포인트가 동일한 경우, mb_no 순으로 정렬이 되는 겁니다.

원하시는걸 이해하지 못하겠네요??^^;;

답변을 작성하시기 전에 로그인 해주세요.
전체 14,905
QA 내용 검색
filter #php ×

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT