다음을 통해 공유


ORDER BY로 행 정렬

ORDER BY 절은 하나 이상의 열을 기준으로 최대 8,060바이트까지 쿼리 결과를 정렬합니다. 최대 ORDER BY 절 크기에 대한 자세한 내용은 ORDER BY 절(Transact-SQL)을 참조하십시오.

SQL Server 2005부터 SQL Server에서는 SELECT 목록에 지정되지 않은 FROM 절의 테이블에서 순서 열을 지정할 수 있습니다. ORDER BY 절에서 참조하는 열 이름은 정확하게 SELECT 목록의 열이나 FROM 절의 테이블 열과 같아야 합니다. SELECT 목록에 열 이름이 별칭으로 지정되어 있을 경우 ORDER BY 절에서 별칭 이름만 사용할 수 있습니다. 마찬가지로 FROM 절에 테이블 이름이 별칭으로 지정되어 있을 경우에도 ORDER BY 절에서 별칭 이름만 사용하여 열을 정규화할 수 있습니다.

정렬에는 오름차순(ASC)과 내림차순(DESC)이 있습니다. 값을 지정하지 않으면 ASC가 사용됩니다.

다음 쿼리는 ProductID를 오름차순으로 정렬하여 결과를 반환합니다.

USE AdventureWorks2008R2;
GO
SELECT ProductID, ProductLine, ProductModelID
FROM Production.Product
ORDER BY ProductID;

ORDER BY 절에 하나 이상의 열을 지정하면 정렬이 중첩됩니다. 다음 문은 Production.Product 테이블의 행을 제품 하위 범주를 기준으로 내림차순으로 정렬한 다음 각 제품 하위 범주 내에서 ListPrice를 기준으로 오름차순으로 정렬합니다.

USE AdventureWorks2008R2;
GO
SELECT ProductID, ProductSubcategoryID, ListPrice
FROM Production.Product
ORDER BY ProductSubcategoryID DESC, ListPrice;

ORDER BY 절의 정확한 결과는 정렬하는 열의 데이터 정렬에 따라 달라집니다. 자세한 내용은 데이터 정렬 작업을 참조하십시오. char, varchar, nchar 및 nvarchar 열의 경우 테이블이나 뷰에 정의된 열의 데이터 정렬과 다른 데이터 정렬에 따라 ORDER BY 연산을 수행하도록 지정할 수 있습니다. Windows 데이터 정렬 이름이나 SQL 데이터 정렬 이름을 지정할 수 있습니다. 예를 들어 AdventureWorks2008R2 데이터베이스에서 Person.Person 테이블의 LastName 열은 Latin1_General 데이터 정렬로 정의되었지만 아래 스크립트에서는 Traditional_Spanish 데이터 정렬을 사용하여 오름차순으로 열이 반환됩니다.

USE AdventureWorks2008R2;
GO
SELECT LastName FROM Person.Person
ORDER BY LastName
COLLATE Traditional_Spanish_ci_ai ASC;
GO

데이터 형식이 text, ntext, image 또는 xml 인 열에는 ORDER BY를 사용할 수 없습니다.

ORDER BY를 사용하면 쿼리의 가장 바깥쪽 SELECT 문에 대해서만 결과가 정렬됩니다. 예를 들어 다음 뷰 정의를 살펴보십시오.

CREATE VIEW TopView AS 
SELECT TOP 50 PERCENT * FROM Person.Person       
ORDER BY LastName;       

그런 다음 뷰를 쿼리합니다.

SELECT * FROM TopView;       

뷰 정의에 ORDER BY 절이 포함되었지만 이 ORDER BY 절은 TOP 절이 반환하는 행을 결정하는 데만 사용됩니다. 뷰 자체를 쿼리할 경우 다음 쿼리에서와 같이 명시적으로 지정하지 않으면 SQL Server에서 결과가 정렬되지 않을 수도 있습니다.

SELECT * FROM TopView       
ORDER BY LastName;       

참고 항목

개념