다음을 통해 공유


ORDER BY(Entity SQL)

SELECT 문에서 반환되는 개체에 적용하는 정렬 순서를 지정합니다.

[ ORDER BY 
   {
            order_by_expression [SKIP n] [LIMIT n]
      [ COLLATE collation_name ]
      [ ASC | DESC ]
   }
   [ ,…n ] 
]

인수

  • order_by_expression
    정렬 기준이 될 속성을 지정하는 모든 유효한 쿼리 식입니다. 여러 정렬 식을 지정할 수 있습니다. ORDER BY 절에서 정렬 식의 시퀀스에 따라 정렬된 결과 집합의 구조가 정의됩니다.
  • COLLATE {collation_name}
    collation_name에 지정된 정렬에 따라 ORDER BY 연산을 수행해야 함을 지정합니다. COLLATE는 문자열 식에만 적용됩니다.
  • ASC
    지정된 속성에서 값이 오름차순으로, 즉 가장 작은 값에서 가장 큰 값으로 정렬되도록 지정합니다. 기본값입니다.
  • DESC
    지정된 속성에서 값이 내림차순으로, 즉 가장 큰 값에서 가장 작은 값으로 정렬되도록 지정합니다.
  • LIMIT n
    처음 n개 항목만 선택됩니다.
  • SKIP n
    처음 n개 항목을 건너뜁니다.

설명

ORDER BY 절은 SELECT 절의 결과에 논리적으로 적용됩니다. ORDER BY 절은 별칭을 사용하여 선택 목록 내 항목을 참조할 수 있습니다. ORDER BY 절은 현재 범위 내에 있는 다른 변수도 참조할 수 있습니다. 하지만, DISTINCT 한정자를 사용하여 SELECT 절이 지정된 경우 ORDER BY 절은 SELECT 절의 별칭만 참조할 수 있습니다.

SELECT c AS c1 FROM cs AS c ORDER BY c1.e1, c.e2

ORDER BY 절의 모든 식은 같지 않음 정렬(예: 보다 작음, 보다 큼)을 비교할 수 있는 형식으로 계산되어야 합니다. 이런 형식은 일반적으로 숫자, 문자열, 날짜와 같은 스칼라 기본 형식입니다. 비교 가능한 형식의 RowType도 순서를 비교할 수 있습니다.

최상위 프로젝션에 대해서가 아니라 정렬된 집합에 대해 코드가 반복되는 경우 출력에 순서가 유지되지 않을 수 있습니다.

-- In the following sample, order is guaranteed to be preserved:
SELECT C1.FirstName, C1.LastName
        FROM AdventureWorks.Contact as C1
        ORDER BY C1.LastName

-- In the following query ordering of the nested query is ignored.
SELECT C2.FirstName, C2.LastName
    FROM (SELECT C1.FirstName, C1.LastName
        FROM AdventureWorks.Contact as C1
        ORDER BY C1.LastName) as C2

정렬된 UNION, UNION ALL, EXCEPT 또는 INTERSECT 연산을 얻으려면 다음 패턴을 사용하십시오.

SELECT ...
FROM ( UNION/EXCEPT/INTERSECT operation )
ORDER BY ...

제한된 키워드

다음 키워드를 ORDER BY 절에서 사용할 때는 따옴표로 묶어야 합니다.

  • CROSS

  • FULL

  • KEY

  • LEFT

  • ORDER

  • OUTER

  • RIGHT

  • ROW

  • VALUE

중첩 쿼리 순서

Entity Framework에서 중첩된 식은 쿼리 내 임의의 위치에 올 수 있습니다. 중첩 쿼리의 순서는 유지되지 않습니다.

-- The following query will order the results by the last name.
SELECT C1.FirstName, C1.LastName
        FROM AdventureWorks.Contact as C1
        ORDER BY C1.LastName

-- In the following query, ordering of the nested query is ignored.
SELECT C2.FirstName, C2.LastName
    FROM (SELECT C1.FirstName, C1.LastName
        FROM AdventureWorks.Contact as C1
        ORDER BY C1.LastName) as C2

예제

다음 Entity SQL 쿼리는 ORDER BY 연산자를 사용하여 SELECT 문에서 반환되는 개체에 적용하는 정렬 순서를 지정합니다. 쿼리는 AdventureWorks Sales 모델을 기반으로 합니다. 이 쿼리를 컴파일하고 실행하려면 다음 단계를 수행하십시오.

  1. 방법: StructuralType 결과를 반환하는 쿼리 실행(EntityClient)의 절차를 수행합니다.

  2. 다음 쿼리를 ExecuteStructuralTypeQuery 메서드에 인수로 전달합니다.

SELECT VALUE p FROM AdventureWorksEntities.Product 
    AS p order by p.ListPrice

출력되는 결과는 다음과 같습니다.

ProductID: 1
Name: Adjustable Race
ProductNumber: AR-5381
MakeFlag: False
ProductID: 2
Name: Bearing Ball
ProductNumber: BA-8327
MakeFlag: False
ProductID: 3
Name: BB Ball Bearing
ProductNumber: BE-2349
MakeFlag: True
ProductID: 4
Name: Headset Ball Bearings
ProductNumber: BE-2908
MakeFlag: False
ProductID: 316
Name: Blade
ProductNumber: BL-2036
MakeFlag: True
...

참고 항목

참조

SKIP(Entity SQL)
LIMIT(Entity SQL)
TOP(Entity SQL)

개념

쿼리 식(Entity SQL)
Entity SQL 참조