수색…


ORDER BY를 TOP과 함께 사용하여 열의 값을 기준으로 최상위 x 행을 반환합니다.

이 예제에서, 우리는뿐만 아니라 BY GROUP을 사용할 수는 행의 종류가 반환 결정뿐만 아니라, 어떤 행은 우리가 결과 집합을 제한하는 TOP을 사용하고 있기 때문에, 반환됩니다.

익명의 인기 Q & A 사이트에서 상위 5 위의 평판 사용자를 반환하고 싶다고 가정 해 보겠습니다.

ORDER BY없이

이 쿼리는 기본값에 의해 정렬 된 상위 5 개의 행을 반환합니다.이 경우 결과에 표시된 열이 아니더라도 테이블의 첫 번째 열인 "Id"입니다.

SELECT TOP 5 DisplayName, Reputation
FROM Users

보고...

DisplayName 평판
커뮤니티 1
제프 달 가스 12567
재 러드 딕슨 11739
제프 앳 우드 37628
조엘 스폴 스키 25784

ORDER BY와 함께

SELECT TOP 5 DisplayName, Reputation
FROM Users
ORDER BY Reputation desc

보고...

DisplayName 평판
존 스케 865023
다린 디미트로프 661741
발루 스 C 650237
한스 패자인 625870
마크 그래벨 601636

비고

일부 SQL 버전 (예 : MySQL)은 처음에 TOP 대신에 SELECT 의 끝에 LIMIT 절을 사용합니다. 예를 들면 다음과 같습니다.

SELECT DisplayName, Reputation
FROM Users
ORDER BY Reputation DESC
LIMIT 5

여러 열로 정렬

SELECT DisplayName, JoinDate, Reputation
FROM Users
ORDER BY JoinDate, Reputation
DisplayName 가입 날짜 평판
커뮤니티 2008-09-15 1
제프 앳 우드 2008-09-16 25784
조엘 스폴 스키 2008-09-16 37628
재 러드 딕슨 2008-10-03 11739
제프 달 가스 2008-10-03 12567

열 번호 별 정렬 (이름 대신)

이름으로 열을 설명하는 대신 열의 번호 (가장 왼쪽 열이 '1')를 사용하여 정렬을 기반으로하는 열을 나타낼 수 있습니다.

Pro : 나중에 열 이름을 변경할 가능성이 있다고 생각하면 그렇게하면이 코드가 손상되지 않습니다.

단점 : 일반적으로 검색어의 가독성을 떨어 뜨립니다 ( 'ORDER BY 14'는 화면에 손가락이있는 경우가 많지만 'ORDER BY 평판'의 의미는 즉시 명확합니다).

이 쿼리는 열 이름 Reputation 대신 select 문에서 관련 열 위치 3 의 정보로 결과를 정렬합니다.

SELECT DisplayName, JoinDate, Reputation
FROM Users
ORDER BY 3
DisplayName 가입 날짜 평판
커뮤니티 2008-09-15 1
재 러드 딕슨 2008-10-03 11739
제프 달 가스 2008-10-03 12567
조엘 스폴 스키 2008-09-16 25784
제프 앳 우드 2008-09-16 37628

별칭 별 주문

논리적 쿼리 처리 순서로 인해 별칭을에 의해 순서대로 사용할 수 있습니다.

SELECT DisplayName, JoinDate as jd, Reputation as rep
FROM Users
ORDER BY jd, rep

그리고 select 문에서 열의 상대적 순서를 사용할 수 있습니다. 위와 같은 예제를 고려하고 별칭을 사용하는 대신 display name과 같은 상대적인 순서를 사용합니다. Jd의 경우 1, Jd의 경우 2와 같은 식입니다.

SELECT DisplayName, JoinDate as jd, Reputation as rep
FROM Users
ORDER BY 2, 3

사용자 지정 정렬 순서

부서별로이 테이블 Employee 를 정렬하려면 부서별 ORDER BY Department 사용하십시오. 그러나 알파벳순이 아닌 다른 정렬 순서를 원할 경우 Department 값을 올바르게 정렬되는 다른 값으로 매핑해야합니다. 이것은 CASE 표현식을 사용하여 수행 할 수 있습니다.

이름 학과
하산 그것
유수프 인사
힐러리 인사
그것
명랑한 인사
시야 회계사
SELECT *
FROM Employee
ORDER BY CASE Department
         WHEN 'HR'         THEN 1
         WHEN 'Accountant' THEN 2
         ELSE                   3
         END;
이름 학과
유수프 인사
힐러리 인사
명랑한 인사
시야 회계사
하산 그것
그것


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow