Поделиться через


TOP (Entity SQL)

Предложение SELECT может иметь необязательное вложенное предложение TOP, которое следует за необязательным модификатором ALL/DISTINCT. Предложение TOP указывает, что в результатах запроса возвращается только набор первых строк.

[ TOP (n) ]

Аргументы

  • n
    Числовое выражение, указывающее количество строк, которые необходимо вернуть. n может быть одним числовым литералом или одним параметром.

Замечания

Выражение TOP должно быть одним числовым литералом или одним параметром. При использовании постоянного литерала он должен поддерживать неявное повышение до Edm.Int64 (byte, int16, int32 и int64 или любой тип поставщика, который сопоставляется с типом, поддерживающим повышение до Edm.Int64), а его значение должно быть больше или равно нулю. В противном случае возникнет исключение. Если в качестве выражения используется параметр, то тип параметра также должен поддерживать неявное повышение до Edm.Int64, однако проверка фактического значения параметра во время компиляции проводиться не будет, поскольку значения параметров связываются в режиме позднего связывания.

Ниже приведен пример постоянного выражения TOP:

select distinct top(10) c.a1, c.a2 from T as a

Ниже приведен пример параметризованного выражения TOP:

select distinct top(@topParam) c.a1, c.a2 from T as a

Выражение TOP является недетерминированным, если запрос не отсортирован. При необходимости в детерминированном результате используйте вложенные предложения SKIP и LIMIT в предложении ORDER BY. Предложения TOP и SKIP/LIMIT являются взаимоисключающими.

Пример

В следующем запросе Entity SQL для указания верхней строки, которую следует вернуть из результата запроса, используется выражение TOP. Запрос основан на модели AdventureWorks Sales. Для компиляции и запуска этого запроса выполните следующие шаги.

  1. Следуйте инструкциям в разделе Как выполнить запрос, возвращающий результаты типа StructuralType (EntityClient).

  2. Передайте следующий запрос в качестве аргумента методу ExecuteStructuralTypeQuery:

SELECT VALUE TOP(1) contact FROM AdventureWorksEntities.Contacts AS contact

См. также

Справочник

SELECT (язык Entity SQL)
SKIP (язык Entity SQL)
LIMIT (язык Entity SQL)
ORDER BY (язык Entity SQL)

Основные понятия

Справочник по Entity SQL