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

適用対象: ○SQL Server (2008 以降) ○Azure SQL Database○Azure SQL Data Warehouse ○Parallel Data Warehouse THIS 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-SQL 構文表記規則Topic 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

式 (expression)expression
返す行数を指定する数式を指定します。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 に設定されており、行 5 の ORDER BY 列の値と一致する行が他に 2 行ある場合、結果セットに含まれる行は 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.

クエリ ページング ソリューションを実装するには、TOP 句ではなく ORDER BY 句で OFFSET と FETCH を使用します。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).

返される行の数を制限するには、SET ROWCOUNT ではなく TOP (または OFFSET と FETCH) を使用します。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:

  • クエリ オプティマイザーでは、クエリを最適化する際に、TOP 句または FETCH 句の expression の値を SELECT ステートメントの一部として認識できます。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. かっこが必須となっている INSERT、UPDATE、MERGE、および DELETE ステートメントとの一貫性を保つために、SELECT ステートメント内の TOP でもかっこを常に使用することをお勧めします。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. トリガーによって挿入および削除の状態となったテーブルからは、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. たとえば、TOP 句が含まれる INSERT ステートメントの結果として INSERT TRIGGER が起動された場合、For example, if an INSERT TRIGGER is fired as the result of an INSERT statement that used a TOP clause,

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.

MERGE ステートメントで指定した TOP 句は、ソース テーブル全体と対象テーブル全体が結合され、挿入、更新、または削除操作の対象とならない結合された行が削除された に適用されます。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 行が挿入されたり、1 行が削除され、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 句を使用し、複数のバッチを作成して大きなテーブルを変更すると、I/O パフォーマンスが影響を受ける場合があります。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.

UNION、UNION ALL、EXCEPT、または INTERSECT 演算子を含む TOP 句をクエリで指定する場合は注意が必要です。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). したがって、前のクエリは任意の赤色の自動車と青色の自動車を 1 つずつ返し、その和集合の結果を価格で並べ替えます。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 を使用して意味のある順序で行を挿入、削除、変更する必要がある場合は、サブセレクト ステートメントで ORDER BY 句を指定して TOP を使用する必要があります。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.

パーティション ビューでは、UPDATE および DELETE ステートメントで TOP を使用することはできません。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、または UPDATE の影響を受ける行の制限Limiting 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. 最初の例では、ORDER BY 句が使用されていないため、先頭の 10 行が任意の順序で返されます。In the first example, the first 10 undefined rows are returned because an ORDER BY clause is not used. 2 番目の例では、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.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.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. 290 の 5% は小数を含む値なので、整数に切り上げられます。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) PERCENT 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、または UPDATE の影響を受ける行の制限Limiting the rows affected by DELETE, INSERT, or UPDATE

A.A. TOP を使用して削除する行数を制限するUsing 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 ステートメントは WHERE 句で定義した条件を満たす任意の数 (n) の行を選択します。That is, the DELETE statement chooses any (n) number of rows that meet the criteria defined in the WHERE clause. 次の例では、納期が 2002 年 7 月 1 日より早い 20 行を PurchaseOrderDetail テーブルから選択して削除します。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 を指定して TOP を使用する必要があります。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. 次のクエリでは、納期が早いものから 10 行を PurchaseOrderDetail テーブルから削除します。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.B. TOP を使用して挿入する行数を制限するUsing 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 ステートメントは、SELECT ステートメントで返された、WHERE 句で定義した条件を満たす任意の 5 行を選択します。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. 上位 5 人の従業員を特定するために SELECT ステートメントの ORDER BY 句を使用することはありません。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 を指定して TOP を使用する必要があります。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 句の結果に基づいて、上位 5 人の従業員が挿入されます。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.C. TOP を使用して更新する行数を制限するUsing TOP to limit the number of rows updated

次の例では、TOP 句を使用してテーブルの行を更新します。The following example uses the TOP clause to update rows in a table. UPDATE ステートメントで TOP (n) 句を使用した場合、任意の数の行に対して更新操作が実行されます。When a TOP (n) clause is used with UPDATE, the update operation is performed on an undefined number of rows. つまり、UPDATE ステートメントは WHERE 句で定義した条件を満たす任意の数 (n) の行を選択します。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 を使用して意味のある日時順での更新を適用する場合は、サブセレクト ステートメントで ORDER BY TOP を使用する必要があります。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  

例: Azure SQL データ ウェアハウスAzure SQL Data Warehouse および Parallel Data WarehouseParallel Data WarehouseExamples: Azure SQL データ ウェアハウスAzure SQL Data Warehouse and Parallel Data WarehouseParallel Data Warehouse

次の例では、クエリ条件に一致する上位 31 行を返します。The following example returns the top 31 rows that match the query criteria. ORDER BY 句は、返される 31 行が、LastName 列のアルファベット順に基づく最初の 31 行になるようにするために使用します。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.

ties を指定せずに TOP を使用する。Using TOP without specifying ties.

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

結果: 31 行が返されます。Result: 31 rows are returned.

WITH TIES を指定して TOP を使用する。Using TOP, specifying WITH TIES.

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

結果: 33 行が返されます。これは、Brown という名前の 3 人の従業員が 31 番目の行と同順位であるためです。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)