TOP (Transact-SQL)TOP (Transact-SQL)

ОБЛАСТЬ ПРИМЕНЕНИЯ ЭТОЙ СТАТЬИ: даSQL Server (начиная с 2008)даБаза данных SQL AzureдаХранилище данных SQL AzureдаParallel Data WarehouseTHIS TOPIC APPLIES TO: yesSQL Server (starting with 2008)yesAzure SQL DatabaseyesAzure SQL Data Warehouse yesParallel Data Warehouse

Ограничивает число строк, возвращаемых в результирующем наборе запроса до заданного числа или процентного значения в SQL Server 2017SQL Server 2017.Limits the rows returned in a query result set to a specified number of rows or percentage of rows in SQL Server 2017SQL Server 2017. Когда TOP используется в сочетании с предложением ORDER BY, результирующий набор ограничивается первыми N заказанными строками; в противном случае возвращаются первые N строк в неопределенном порядке.When TOP is used in conjunction with the ORDER BY clause, the result set is limited to the first N number of ordered rows; otherwise, it returns the first N number of rows in an undefined order. Это предложение позволяет указать число строк, возвращаемых инструкцией SELECT или обработанных инструкциями INSERT, UPDATE, MERGE и DELETE.Use this clause to specify the number of rows returned from a SELECT statement or affected by an INSERT, UPDATE, MERGE, or DELETE statement.

Значок ссылки на раздел Синтаксические обозначения в Transact-SQLTopic link icon Transact-SQL Syntax Conventions

СинтаксисSyntax

-- Syntax for SQL Server and Azure SQL Database  

[   
    TOP (expression) [PERCENT]  
    [ WITH TIES ]  
]  
-- Syntax for Azure SQL Data Warehouse and Parallel Data Warehouse  

[   
    TOP ( expression )   
    [ WITH TIES ]  
]  

АргументыArguments

expressionexpression
Числовое выражение, определяющее количество возвращаемых строк.Is the numeric expression that specifies the number of rows to be returned. При указании PERCENT аргумент expression неявно преобразуется в тип float; в противном случае он преобразуется в тип bigint.expression is implicitly converted to a float value if PERCENT is specified; otherwise, it is converted to bigint.

PERCENTPERCENT
Указывает на то, что запрос возвращает только первые expression процентов строк из результирующего набора.Indicates that the query returns only the first expression percent of rows from the result set. Дробные значения округляются до следующего целого числа.Fractional values are rounded up to the next integer value.

WITH TIESWITH TIES
Используется, если требуется вернуть две или более строки, которые совместно занимают последнее место в ограниченном результирующем наборе.Used when you want to return two or more rows that tie for last place in the limited results set. Требуется использовать с предложением ORDER BY.Must be used with the ORDER BY clause. WITH TIES может привести к тому, что будет возвращено строк больше, чем указано в значении expression.WITH TIES may cause more rows to be returned than the value specified in expression. Например, если expression имеет значение 5, но еще 2 строки соответствуют значениям в столбцах ORDER BY в строке 5, то результирующий набор будет содержать 7 строк.For example, if expression is set to 5 but 2 additional rows match the values of the ORDER BY columns in row 5, the result set will contain 7 rows.

Предложение TOP...WITH TIES может быть задано только в инструкциях SELECT, и только если указано предложение ORDER BY.TOP...WITH TIES can be specified only in SELECT statements, and only if an ORDER BY clause is specified. Порядок возврата связанных записей произволен.The returned order of tying records is arbitrary. ORDER BY не влияет на это правило.ORDER BY does not affect this rule.

РекомендацииBest Practices

В инструкции SELECT всегда указывайте ORDER BY вместе с предложением TOP.In a SELECT statement, always use an ORDER BY clause with the TOP clause. Это единственный способ предсказуемым образом отметить строки, которые были обработаны предложением TOP.This is the only way to predictably indicate which rows are affected by TOP.

Для реализации решения разбиения на страницы пользуйтесь предложениями OFFSET и FETCH в предложении ORDER BY, а не предложением TOP.Use OFFSET and FETCH in the ORDER BY clause instead of the TOP clause to implement a query paging solution. Решение разбиения на страницы (т.е. постраничной выдачи данных клиенту) проще реализовать с помощью предложений OFFSET и FETCH.A paging solution (that is, sending chunks or "pages" of data to the client) is easier to implement using OFFSET and FETCH clauses. Дополнительные сведения см. в разделе Предложение ORDER BY (Transact-SQL).For more information, see ORDER BY Clause (Transact-SQL).

Для ограничения числа возвращаемых строк пользуйтесь TOP (или OFFSET и FETCH), а не SET ROWCOUNT.Use TOP (or OFFSET and FETCH) instead of SET ROWCOUNT to limit the number of rows returned. Эти методы предпочтительнее, чем SET ROWCOUNT, по следующим причинам:These methods are preferred over using SET ROWCOUNT for the following reasons:

  • Являясь частью инструкции SELECT, оптимизатор запросов может принимать значение expression в предложениях TOP или FETCH во время оптимизации запроса.As a part of a SELECT statement, the query optimizer can consider the value of expression in the TOP or FETCH clauses during query optimization. Поскольку SET ROWCOUNT используется вне инструкции, выполняющей запрос, его значение не может быть учтено при создании плана запроса.Because SET ROWCOUNT is used outside a statement that executes a query, its value cannot be considered in a query plan.

Поддержка совместимостиCompatibility Support

В целях обратной совместимости скобки в инструкции SELECT необязательны.For backward compatibility, the parentheses are optional in SELECT statements. Рекомендуется всегда заключать TOP в скобки в инструкциях SELECT, чтобы обеспечить согласованность его использования с инструкциями INSERT, UPDATE, MERGE и DELETE, где они являются обязательными.We recommend that you always use parentheses for TOP in SELECT statements for consistency with its required use in INSERT, UPDATE, MERGE, and DELETE statements in which the parentheses are required.

СовместимостьInteroperability

Выражение TOP в запросе не влияет на инструкции, которые могут быть выполнены из-за срабатывания триггера.The TOP expression does not affect statements that may be executed because of a trigger. Таблицы inserted и deleted в триггерах возвращают только те строки, которые реально обработаны инструкциями INSERT, UPDATE, MERGE или DELETE.The inserted and deleted tables in the triggers will return only the rows that were truly affected by the INSERT, UPDATE, MERGE, or DELETE statements. Например, если триггер INSERT сработал в результате выполнения инструкции INSERT с предложением TOP,For example, if an INSERT TRIGGER is fired as the result of an INSERT statement that used a TOP clause,

то SQL ServerSQL Server позволяет обновлять строки через представления. SQL ServerSQL Server allows for updating rows through views. Так как в определение представления может быть включено предложение TOP, определенные строки могут исчезнуть из представления из-за обновления, если строки больше не соответствуют требованиям выражения TOP.Because the TOP clause can be included in the view definition, certain rows may disappear from the view because of an update if the rows no longer meet the requirements of the TOP expression.

Если предложение TOP указано в инструкции MERGE, то применяется после соединения всей исходной таблицы и всей целевой таблицы и удаления соединенных строк, которые не рассматриваются как предназначенные для выполнения операций вставки, обновления или удаления.When specified in the MERGE statement, the TOP clause is applied after the entire source table and the entire target table are joined and the joined rows that do not qualify for an insert, update, or delete action are removed. Предложение TOP дополнительно сокращает количество соединенных строк до указанного значения, а затем к оставшимся соединенным строкам применяются операции вставки, обновления или удаления без учета порядка.The TOP clause further reduces the number of joined rows to the specified value and the insert, update, or delete actions are applied to the remaining joined rows in an unordered fashion. Иными словами, порядок, в котором строки подвергаются операциям, определенным в предложениях WHEN, не задан.That is, there is no order in which the rows are distributed among the actions defined in the WHEN clauses. Например, указание значения TOP (10) затрагивает 10 строк. Из них 7 могут быть обновлены и 3 вставлены или одна строка может быть удалена, 5 обновлено, 4 вставлено и т. д.For example, if specifying TOP (10) affects 10 rows; of these rows, 7 may be updated and 3 inserted, or 1 may be deleted, 5 updated, and 4 inserted, and so on. Инструкция MERGE выполняет полный просмотр исходной и целевой таблиц, поэтому при использовании предложения TOP для изменения большой таблицы путем создания нескольких пакетов производительность ввода-вывода может снизиться.Because the MERGE statement performs a full table scan of both the source and target tables, I/O performance can be affected when using the TOP clause to modify a large table by creating multiple batches. В этом случае необходимо обеспечить, чтобы во всех подряд идущих пакетах осуществлялась обработка новых строк.In this scenario, it is important to ensure that all successive batches target new rows.

Указывайте предложение TOP в запросе, содержащем операторы UNION, UNION ALL, EXCEPT и INTERSECT, с осторожностью.Use caution when specifying the TOP clause in a query that contains a UNION, UNION ALL, EXCEPT, or INTERSECT operator. Существует возможность, что написанный вложенный запрос вернут непредвиденные результаты, поскольку порядок, в котором логически обрабатываются предложения TOP и ORDER BY, не всегда интуитивно понятен, когда эти операторы используются в операции выбора.It is possible to write a query that returns unexpected results because the order in which the TOP and ORDER BY clauses are logically processed is not always intuitive when these operators are used in a select operation. Например, исходя из следующих таблиц и данных, предположим, что необходимо вернуть самый недорогой красный и синий автомобили.For example, given the following table and data, assume that you want to return the least expensive red car and the least expensive blue car. Иными словами, красный седан и синий фургон.That is, the red sedan and the blue van.

CREATE TABLE dbo.Cars(Model varchar(15), Price money, Color varchar(10));  
INSERT dbo.Cars VALUES  
    ('sedan', 10000, 'red'), ('convertible', 15000, 'blue'),   
    ('coupe', 20000, 'red'), ('van', 8000, 'blue');  

Чтобы получить такие результаты, можно написать следующий запрос.To achieve these results, you might write the following query.

SELECT TOP(1) Model, Color, Price  
FROM dbo.Cars  
WHERE Color = 'red'  
UNION ALL  
SELECT TOP(1) Model, Color, Price  
FROM dbo.Cars  
WHERE Color = 'blue'  
ORDER BY Price ASC;  
GO    

Ниже приводится результирующий набор.Here is the result set.

Model         Color      Price  
------------- ---------- -------  
sedan         red        10000.00  
convertible   blue       15000.00

Возвращаются непредвиденные результаты, поскольку инструкция TOP логически выполняется раньше, чем предложение ORDER BY, которое сортирует результаты оператора (в данном случае UNION ALL).The unexpected results are returned because the TOP clause is logically executed before the ORDER BY clause, which sorts the results of the operator (UNION ALL in this case). Таким образом, предыдущие запросы вернут произвольный красный и произвольный синий автомобили, а затем отсортируют результат объединения по цене.Thus, the previous query returns any one red car and any one blue car and then orders the result of that union by the price. Следующий пример показывает, как правильно написать запрос, который позволит получить нужный результат.The following example shows the correct method of writing this query to achieve the desired result.

SELECT Model, Color, Price  
FROM (SELECT TOP(1) Model, Color, Price  
      FROM dbo.Cars  
      WHERE Color = 'red'  
      ORDER BY Price ASC) AS a  
UNION ALL  
SELECT Model, Color, Price  
FROM (SELECT TOP(1) Model, Color, Price  
      FROM dbo.Cars  
      WHERE Color = 'blue'  
      ORDER BY Price ASC) AS b;  
GO    

Использование TOP и ORDER BY во вложенной операции выбора гарантирует, что результаты предложения ORDER BY применяются к инструкции TOP, а не к сортировке результата операции UNION.By using TOP and ORDER BY in a subselect operation, you ensure that the results of the ORDER BY clause is used applied to the TOP clause and not to sorting the result of the UNION operation.

Ниже приводится результирующий набор.Here is the result set.

Model         Color      Price  
------------- ---------- -------  
sedan         red        10000.00  
van           blue        8000.00

ОграниченияLimitations and Restrictions

При использовании TOP в инструкциях INSERT, UPDATE, MERGE и DELETE указанные строки никак не упорядочены и предложение ORDER BY не может быть прямо указано в этих инструкциях.When TOP is used with INSERT, UPDATE, MERGE, or DELETE, the referenced rows are not arranged in any order and the ORDER BY clause can not be directly specified in these statements. Если необходимо использовать TOP при вставке, удалении или изменении строк в определенном хронологическом порядке, необходимо использовать TOP в сочетании с предложением ORDER BY, указанным в инструкции подзапроса выборки.If you need to use TOP to insert, delete, or modify rows in a meaningful chronological order, you must use TOP together with an ORDER BY clause that is specified in a subselect statement. См. подраздел «Примеры» далее в этом разделе.See the Examples section that follows in this topic.

Предложение TOP не может быть использовано вместе с инструкциями UPDATE и DELETE для секционированных представлений.TOP cannot be used in an UPDATE and DELETE statements on partitioned views.

TOP нельзя сочетать с OFFSET и FETCH в одном выражении запроса (в той же области запроса).TOP cannot be combined with OFFSET and FETCH in the same query expression (in the same query scope). Дополнительные сведения см. в разделе Предложение ORDER BY (Transact-SQL).For more information, see ORDER BY Clause (Transact-SQL).

ПримерыExamples

КатегорияCategory Используемые элементы синтаксисаFeatured syntax elements
Основной синтаксисBasic syntax TOP • PERCENTTOP • PERCENT
Включить равные значенияIncluding tie values WITH TIESWITH TIES
Ограничение числа строк, обрабатываемых инструкциями DELETE, INSERT и UPDATELimiting the rows affected by DELETE, INSERT, or UPDATE DELETE • INSERT • UPDATEDELETE • INSERT • UPDATE

Основной синтаксисBasic syntax

В примерах этого раздела показана базовая функциональность предложения ORDER BY с использованием минимально необходимого синтаксиса.Examples in this section demonstrate the basic functionality of the ORDER BY clause using the minimum required syntax.

A.A. Использование ключевого слова TOP со значением константыUsing TOP with a constant value

В следующих примерах константа указывает число сотрудников, возвращаемых в результирующем наборе запроса.The following examples use a constant value to specify the number of employees that are returned in the query result set. В первом примере возвращаются 10 произвольных строк, так как отсутствует предложение ORDER BY.In the first example, the first 10 undefined rows are returned because an ORDER BY clause is not used. Во втором примере предложение ORDER BY возвращает 10 сотрудников, последними принятых на работу.In the second example, an ORDER BY clause is used to return the top 10 recently hired employees.

USE AdventureWorks2012;  
GO  
-- Select the first 10 random employees.  
SELECT TOP(10)JobTitle, HireDate  
FROM HumanResources.Employee;  
GO  
-- Select the first 10 employees hired most recently.  
SELECT TOP(10)JobTitle, HireDate  
FROM HumanResources.Employee  
ORDER BY HireDate DESC;  
GO  

Б.B. Использование ключевого слова TOP с переменнойUsing TOP with a variable

В следующем примере переменная указывает число сотрудников, возвращаемых в результирующем наборе запроса.The following example uses a variable to specify the number of employees that are returned in the query result set.

USE AdventureWorks2012;  
GO  
DECLARE @p AS int = 10;  
SELECT TOP(@p)JobTitle, HireDate, VacationHours  
FROM HumanResources.Employee  
ORDER BY VacationHours DESC;  
GO  

В.C. Указание процентовSpecifying a percentage

В следующем примере PERCENT указывает число сотрудников, возвращаемых в результирующем наборе запроса.The following example uses PERCENT to specify the number of employees that are returned in the query result set. В таблице HumanResources.Employee содержится 290 сотрудников.There are 290 employees in the HumanResources.Employee table. Поскольку 5% от 290 является дробным числом, значение округляется до следующего целого числа.Because 5 percent of 290 is a fractional value, the value is rounded up to the next whole number.

USE AdventureWorks2012;  
GO  
SELECT TOP(5)PERCENT JobTitle, HireDate  
FROM HumanResources.Employee  
ORDER BY HireDate DESC;  
GO    

Включить равные значенияIncluding tie values

A.A. Использование ключевого слова WITH TIES для включения строк, соответствующих значениям в последней строкеUsing WITH TIES to include rows that match the values in the last row

Следующий пример извлекает первые 10 процентов работников с наибольшей зарплатой и возвращает их в порядке убывания размера зарплаты.The following example obtains the top 10 percent of all employees with the highest salary and returns them in descending order according to their salary. Указание параметра WITH TIES позволяет быть уверенным в том, что все работники с зарплатой, равной минимальной возвращенной зарплате (последняя строка), включены в результирующий набор, даже если это приведет к превышению ограничения в 10 процентов работников.Specifying WITH TIES makes sure that any employees that have salaries equal to the lowest salary returned (the last row) are also included in the result set, even if doing this exceeds 10 percent of employees.

USE AdventureWorks2012;  
GO  
SELECT TOP(10)WITH TIES  
pp.FirstName, pp.LastName, e.JobTitle, e.Gender, r.Rate  
FROM Person.Person AS pp   
    INNER JOIN HumanResources.Employee AS e  
        ON pp.BusinessEntityID = e.BusinessEntityID  
    INNER JOIN HumanResources.EmployeePayHistory AS r  
        ON r.BusinessEntityID = e.BusinessEntityID  
ORDER BY Rate DESC;  
GO    

Ограничение числа строк, обрабатываемых инструкциями DELETE, INSERT и UPDATELimiting the rows affected by DELETE, INSERT, or UPDATE

A.A. Ограничение числа удаляемых строк с помощью ключевого слова TOPUsing TOP to limit the number of rows deleted

Если с инструкцией DELETE применяется предложение TOP (n), то операция удаления производится с произвольной выборкой из n строк.When a TOP (n) clause is used with DELETE, the delete operation is performed on an undefined selection of n number of rows. Таким образом, инструкция DELETE выбирает любое число (n) строк, которые удовлетворяют условию, указанному в предложении WHERE.That is, the DELETE statement chooses any (n) number of rows that meet the criteria defined in the WHERE clause. Следующий пример удаляет 20 строк из таблицы PurchaseOrderDetail, имеющих дату ранее 1 июля 2002 г.The following example deletes 20 rows from the PurchaseOrderDetail table that have due dates that are earlier than July 1, 2002.

USE AdventureWorks2012;  
GO  
DELETE TOP (20)   
FROM Purchasing.PurchaseOrderDetail  
WHERE DueDate < '20020701';  
GO  

Если необходимо с помощью предложения TOP удалять строки в значимом хронологическом порядке, то вместе с ним в инструкции вложенного запроса выборки следует использовать ORDER BY.If you have to use TOP to delete rows in a meaningful chronological order, you must use TOP together with ORDER BY in a subselect statement. Следующий запрос удаляет из таблицы PurchaseOrderDetail 10 строк, имеющих самую раннюю дату.The following query deletes the 10 rows of the PurchaseOrderDetail table that have the earliest due dates. Чтобы гарантировать удаление только 10 строк, столбец, указанный в инструкции подзапроса выборки (PurchaseOrderID) должен являться первичным ключом таблицы.To ensure that only 10 rows are deleted, the column specified in the subselect statement (PurchaseOrderID) is the primary key of the table. Использование неключевого столбца в инструкции подзапроса выборки может привести к удалению более чем 10 строк, если указанный столбец содержит повторяющиеся значения.Using a nonkey column in the subselect statement may result in the deletion of more than 10 rows if the specified column contains duplicate values.

USE AdventureWorks2012;  
GO  
DELETE FROM Purchasing.PurchaseOrderDetail  
WHERE PurchaseOrderDetailID IN  
   (SELECT TOP 10 PurchaseOrderDetailID   
    FROM Purchasing.PurchaseOrderDetail   
    ORDER BY DueDate ASC);  
GO  

Б.B. Ограничение числа вставляемых строк с помощью ключевого слова TOPUsing TOP to limit the number of rows inserted

В следующем примере создается таблица EmployeeSales и вставляется имя и данные о продажах за текущий год для 5 наиболее успешных сотрудников, случайно выбираемых в таблице HumanResources.Employee.The following example creates the table EmployeeSales and inserts the name and year-to-date sales data for the top 5 employees from the table HumanResources.Employee. Инструкция INSERT выбирает любые 5 строк, возвращаемых инструкцией SELECT, удовлетворяющих определенному условию в предложении WHERE.The INSERT statement chooses any 5 rows returned by the SELECT statement that meet the criteria defined in the WHERE clause. Предложение OUTPUT отображает строки, вставляемые в таблицу EmployeeSales.The OUTPUT clause displays the rows that are inserted into the EmployeeSales table. Обратите внимание, что предложение ORDER BY в инструкции SELECT не используется для определения 5 наиболее успешных сотрудников.Notice that the ORDER BY clause in the SELECT statement is not used to determine the top 5 employees.

USE AdventureWorks2012 ;  
GO  
IF OBJECT_ID ('dbo.EmployeeSales', 'U') IS NOT NULL  
    DROP TABLE dbo.EmployeeSales;  
GO  
CREATE TABLE dbo.EmployeeSales  
( EmployeeID   nvarchar(11) NOT NULL,  
  LastName     nvarchar(20) NOT NULL,  
  FirstName    nvarchar(20) NOT NULL,  
  YearlySales  money NOT NULL  
 );  
GO  
INSERT TOP(5)INTO dbo.EmployeeSales  
    OUTPUT inserted.EmployeeID, inserted.FirstName, inserted.LastName, inserted.YearlySales  
    SELECT sp.BusinessEntityID, c.LastName, c.FirstName, sp.SalesYTD   
    FROM Sales.SalesPerson AS sp  
    INNER JOIN Person.Person AS c  
        ON sp.BusinessEntityID = c.BusinessEntityID  
    WHERE sp.SalesYTD > 250000.00  
    ORDER BY sp.SalesYTD DESC;  
GO    

Если для вставки строк в значимом хронологическом порядке решено использовать предложение TOP, вместе с ним в инструкции подзапроса выборки следует использовать предложение ORDER BY, как показано в следующем примере.If you have to use TOP to insert rows in a meaningful chronological order, you must use TOP together with ORDER BY in a subselect statement as shown in the following example. Предложение OUTPUT отображает строки, вставляемые в таблицу EmployeeSales.The OUTPUT clause displays the rows that are inserted into the EmployeeSales table. Обратите внимание, что вставка данных пяти наиболее успешных сотрудников выполняется теперь на основе результатов предложения ORDER BY, а не произвольных строк.Notice that the top 5 employees are now inserted based on the results of the ORDER BY clause instead of undefined rows.

INSERT INTO dbo.EmployeeSales  
    OUTPUT inserted.EmployeeID, inserted.FirstName, inserted.LastName, inserted.YearlySales  
    SELECT TOP (5) sp.BusinessEntityID, c.LastName, c.FirstName, sp.SalesYTD   
    FROM Sales.SalesPerson AS sp  
    INNER JOIN Person.Person AS c  
        ON sp.BusinessEntityID = c.BusinessEntityID  
    WHERE sp.SalesYTD > 250000.00  
    ORDER BY sp.SalesYTD DESC;  
GO    

В.C. Ограничение числа обновляемых строк с помощью ключевого слова TOPUsing TOP to limit the number of rows updated

В следующем примере предложение TOP используется для обновления строк в таблице.The following example uses the TOP clause to update rows in a table. Если предложение TOP (n) используется с инструкцией UPDATE, то операция обновления выполняется для произвольного подмножества строк.When a TOP (n) clause is used with UPDATE, the update operation is performed on an undefined number of rows. Таким образом, инструкция UPDATE выбирает любое число (n) строк, которые удовлетворяют условию, указанному в предложении WHERE.That is, the UPDATE statement chooses any (n) number of rows that meet the criteria defined in the WHERE clause. В следующем примере 10 случайно выбранных заказчиков переназначаются от одного менеджера по продажам к другому.The following example assigns 10 customers from one salesperson to another.

USE AdventureWorks2012;  
UPDATE TOP (10) Sales.Store  
SET SalesPersonID = 276  
WHERE SalesPersonID = 275;  
GO  

Если нужно применить изменения с предложением TOP в определенной последовательности, укажите во вложенном запросе SELECT предложение ORDER BY.If you have to use TOP to apply updates in a meaningful chronology, you must use TOP together with ORDER BY in a subselect statement. В следующем примере изменяется длительность отпуска для 10 сотрудников, имеющих наибольший стаж работы.The following example updates the vacation hours of the 10 employees with the earliest hire dates.

UPDATE HumanResources.Employee  
SET VacationHours = VacationHours + 8  
FROM (SELECT TOP 10 BusinessEntityID FROM HumanResources.Employee  
     ORDER BY HireDate ASC) AS th  
WHERE HumanResources.Employee.BusinessEntityID = th.BusinessEntityID;  
GO  

Примеры: Хранилище данных SQL AzureAzure SQL Data Warehouse и Параллельное хранилище данныхParallel Data WarehouseExamples: Хранилище данных SQL AzureAzure SQL Data Warehouse and Параллельное хранилище данныхParallel Data Warehouse

В приведенном ниже примере возвращаются первые строки (31), соответствующие условию запроса.The following example returns the top 31 rows that match the query criteria. Предложение ORDER BY гарантирует, что возвращаемые строки — это первые строки из столбца LastName с сортировкой по алфавиту.The ORDER BY clause is used to ensure that the 31 returned rows are the first 31 rows based on an alphabetical ordering of the LastName column.

Использование TOP без указания равных элементов.Using TOP without specifying ties.

SELECT TOP (31) FirstName, LastName   
FROM DimEmployee ORDER BY LastName;  

Результат: возвращается 31 строка.Result: 31 rows are returned.

Использование TOP с указанием WITH TIES.Using TOP, specifying WITH TIES.

SELECT TOP (31) WITH TIES FirstName, LastName   
FROM DimEmployee ORDER BY LastName;  

Результат: возвращаются 33 строки, так как 31-й строке соответствуют 3 сотрудника с именем Brown.Result: 33 rows are returned, because 3 employees named Brown tie for the 31st row.

См. также:See Also

SELECT (Transact-SQL) SELECT (Transact-SQL)
INSERT (Transact-SQL) INSERT (Transact-SQL)
UPDATE (Transact-SQL) UPDATE (Transact-SQL)
DELETE (Transact-SQL) DELETE (Transact-SQL)
Предложение ORDER BY (Transact-SQL) ORDER BY Clause (Transact-SQL)
SET ROWCOUNT (Transact-SQL) SET ROWCOUNT (Transact-SQL)
MERGE (Transact-SQL)MERGE (Transact-SQL)