다음을 통해 공유


SELECT(Entity SQL)

쿼리에서 반환되는 요소를 지정합니다.

문법

SELECT [ ALL | DISTINCT ] [ topSubclause ] aliasedExpr
      [{ , aliasedExpr }] FROM fromClause [ WHERE whereClause ] [ GROUP BY groupByClause [ HAVING havingClause ] ] [ ORDER BY orderByClause ]
-- or
SELECT VALUE [ ALL | DISTINCT ] [ topSubclause ] expr FROM fromClause [ WHERE whereClause ] [ GROUP BY groupByClause [ HAVING havingClause ] ] [ ORDER BY orderByClause

주장들

ALL 결과 집합에 중복 항목이 표시될 수 있도록 지정합니다. 기본값은 ALL입니다.

DISTINCT 결과 집합에 고유한 결과만 표시할 수 있도록 지정합니다.

VALUE를 사용하면 하나의 항목만 지정할 수 있으며 행 래퍼에는 추가되지 않습니다.

topSubclause 쿼리 top(expr)에서 반환할 폼의 첫 번째 결과 수를 나타내는 유효한 식입니다.

ORDER BY 연산자의 LIMIT 매개 변수를 사용하면 결과 집합에서 첫 번째 n개 항목을 선택할 수도 있습니다.

aliasedExpr 양식의 식입니다.

expr 만큼 identifier | expr

expr 리터럴 또는 식입니다.

비고

SELECT 절은 FROM, GROUP BYHAVING 절이 평가된 후에 평가됩니다. SELECT 절은 현재 범위 내 항목(FROM 절 또는 외부 범위)만 참조할 수 있습니다. GROUP BY 절이 지정된 경우 SELECT 절은 GROUP BY 키의 별칭만 참조할 수 있습니다. FROM 절 항목을 참조하는 것은 집계 함수에서만 허용됩니다.

SELECT 키워드 다음에 있는 하나 이상의 쿼리 식 목록을 select 목록 또는 더 공식적으로 프로젝션이라고 합니다. 가장 일반적인 프로젝션 형식은 단일 쿼리 식입니다. 컬렉션에서 멤버 member1 를 선택하면 다음 예제와 같이 각 개체collection1에 대한 모든 member1 값의 새 컬렉션을 생성collection1합니다.

SELECT collection1.member1 FROM collection1

예를 들어 형식의 속성 stringName 이 있는 형식 Customer 의 컬렉션인 경우 customers 다음 예제와 같이 문자열 Namecustomers 컬렉션을 생성합니다.

SELECT customers.Name FROM customers AS c

JOIN 구문(FULL, INNER, LEFT, OUTER, ON 및 RIGHT)을 사용할 수도 있습니다. ON은 내부 조인에 필요하며 교차 조인에 대해 nto가 허용됩니다.

행 및 값 선택 절

Entity SQL은 SELECT 절의 두 가지 변형을 지원합니다. 첫 번째 변형인 행 선택 항목은 SELECT 키워드로 식별되며 프로젝트해야 하는 하나 이상의 값을 지정하는 데 사용할 수 있습니다. 행 래퍼는 반환된 값 주위에 암시적으로 추가되므로 쿼리 식의 결과는 항상 여러 행 집합입니다.

행 선택에서 각 쿼리 식은 별칭을 지정해야 합니다. 별칭이 지정되지 않은 경우 Entity SQL은 별칭 생성 규칙을 사용하여 별칭을 생성하려고 시도합니다.

SELECT 절의 다른 변형인 값 선택은 SELECT VALUE 키워드로 식별됩니다. 하나의 값만 지정할 수 있으며 행 래퍼를 추가하지 않습니다.

행 선택은 다음 예제와 같이 VALUE SELECT 측면에서 항상 표현할 수 있습니다.

SELECT 1 AS a, "abc" AS b FROM C
SELECT VALUE ROW(1 AS a, "abc" AS b) FROM C

모두 및 고유 한정자

Entity SQL에서 SELECT의 두 변형 모두 ALL 또는 DISTINCT 한정자의 사양을 허용합니다. DISTINCT 한정자를 지정하면 쿼리 식에서 생성된 컬렉션에서 중복 항목이 제거됩니다(SELECT 절까지 포함). ALL 한정자를 지정하면 중복 제거가 수행되지 않습니다. ALL이 기본값입니다.

Transact-SQL 차이점

Transact-SQL과 달리 Entity SQL은 SELECT 절의 * 인수 사용을 지원하지 않습니다. 대신 Entity SQL을 사용하면 다음 예제와 같이 FROM 절에서 컬렉션 별칭을 참조하여 쿼리가 전체 레코드를 프로젝션할 수 있습니다.

SELECT * FROM T1, T2

이전 Transact-SQL 쿼리 식은 다음과 같은 방식으로 Entity SQL로 표현됩니다.

SELECT a1, a2 FROM T1 AS a1, T2 AS a2

예시

다음 Entity SQL 쿼리는 SELECT 연산자를 사용하여 쿼리에서 반환할 요소를 지정합니다. 쿼리는 AdventureWorks 판매 모델을 기반으로 합니다. 이 쿼리를 컴파일하고 실행하려면 다음 단계를 수행합니다.

  1. 방법: StructuralType 결과를 반환하는 쿼리 실행의 절차를 따릅니다.

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

SELECT VALUE product FROM AdventureWorksEntities.Products 
    AS product WHERE product.ListPrice < @price

참고하십시오