Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Указывает элементы, возвращаемые запросом.
Синтаксис
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 указывает, что в результирующем наборе могут отображаться только уникальные результаты.
ЗНАЧЕНИЕ позволяет указывать только один элемент и не добавляется в оболочку строки.
topSubclause Любое допустимое выражение, указывающее количество первых результатов, возвращаемых из запроса, формы top(expr).
Параметр LIMIT оператора ORDER BY также позволяет выбрать первые n элементов в результирующем наборе.
aliasedExpr Выражение формы:
expr как identifier | expr
expr Литерал или выражение.
Замечания
Предложение SELECT вычисляется после оценки предложений FROM, GROUP BY и HAVING . Предложение SELECT может ссылаться только на элементы в области (из предложения FROM или из внешних областей). Если указано предложение GROUP BY, предложение SELECT разрешено ссылаться только на псевдонимы ключей GROUP BY. Ссылка на элементы предложения FROM разрешена только в агрегатных функциях.
Список одного или нескольких выражений запросов после ключевого слова SELECT называется списком выбора или более формально как проекция. Наиболее общая форма проекции — это одно выражение запроса. Если выбрать элемент member1 из коллекции collection1, вы создайте новую коллекцию всех member1 значений для каждого объекта, collection1как показано в следующем примере.
SELECT collection1.member1 FROM collection1
Например, если customers это коллекция типов Customer , которая имеет свойство Name типа string, выбор Name из customers него приведет к получению коллекции строк, как показано в следующем примере.
SELECT customers.Name FROM customers AS c
Также можно использовать синтаксис JOIN (FULL, INNER, LEFT, OUTER, ON и RIGHT). ON требуется для внутренних соединений и допускается для перекрестных соединений.
Предложения выбора строк и значений
Entity SQL поддерживает два варианта предложения SELECT. Первый вариант, выбор строки, определяется ключевым словом SELECT и может использоваться для указания одного или нескольких значений, которые следует проецировать. Так как оболочка строк неявно добавляется вокруг возвращаемых значений, результат выражения запроса всегда является многомножеством строк.
Каждое выражение запроса в строке выбора должно указывать псевдоним. Если псевдоним не указан, Entity SQL пытается создать псевдоним с помощью правил создания псевдонима.
Другой вариант предложения SELECT, значение 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
Все и отдельные модификаторы
Оба варианта SELECT в Entity SQL позволяют спецификацию модификатора 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. Чтобы скомпилировать и запустить этот запрос, выполните следующие действия.
Выполните процедуру, описанную в разделе "Практическое руководство. Выполнение запроса, возвращающего результаты структурного типа".
Передайте следующий запрос в качестве аргумента в
ExecuteStructuralTypeQueryметод:
SELECT VALUE product FROM AdventureWorksEntities.Products
AS product WHERE product.ListPrice < @price