수색…
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;
이름 | 학과 |
---|---|
유수프 | 인사 |
힐러리 | 인사 |
명랑한 | 인사 |
시야 | 회계사 |
하산 | 그것 |
조 | 그것 |