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

ESTE TEMA SE APLICA A: síSQL Server (a partir de 2008)síAzure SQL DatabasesíAzure SQL Data Warehouse síAlmacenamiento de datos paralelos THIS TOPIC APPLIES TO: yesSQL Server (starting with 2008)yesAzure SQL DatabaseyesAzure SQL Data Warehouse yesParallel Data Warehouse

Limita las filas devueltas en un conjunto de resultados de la consulta a un número o porcentaje de filas especificado en 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. Cuando se usa TOP junto con la cláusula ORDER BY, el conjunto de resultados se limita al primer N número de filas ordenadas; en caso contrario, devuelve el primer N número de filas en un orden indefinido.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. Utilice esta cláusula para especificar el número de filas devueltas de una instrucción SELECT o afectadas por una instrucción INSERT, UPDATE, MERGE o 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.

Icono de vínculo de tema Convenciones de sintaxis de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxisSyntax

-- 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 ]  
]  

ArgumentosArguments

expressionexpression
Es la expresión numérica válida que especifica el número de filas que se van a devolver.Is the numeric expression that specifies the number of rows to be returned. expresión se convierte implícitamente en un float valor si se especificó PERCENT; en caso contrario, se convierte en bigint.expression is implicitly converted to a float value if PERCENT is specified; otherwise, it is converted to bigint.

PERCENTPERCENT
Indica que la consulta devuelve solo la primera expresión por ciento de filas del conjunto de resultados.Indicates that the query returns only the first expression percent of rows from the result set. Los valores fraccionarios se redondean al siguiente valor entero.Fractional values are rounded up to the next integer value.

WITH TIESWITH TIES
Se usa cuando se desean devolver dos o más filas que ocupan el último lugar en el conjunto de resultados limitado.Used when you want to return two or more rows that tie for last place in the limited results set. Se debe utilizar con la ORDER BY cláusula.Must be used with the ORDER BY clause. WITH TIES puede hacer más filas que se devuelvan que el valor especificado en expresión.WITH TIES may cause more rows to be returned than the value specified in expression. Por ejemplo, si expresión se establece en 5, pero 2 filas adicionales coinciden con los valores de la ORDER BY columnas en la fila 5, el conjunto de resultados contendrá 7 filas.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 solo se puede especificar en instrucciones SELECT y siempre que se haya especificado una cláusula ORDER BY.TOP...WITH TIES can be specified only in SELECT statements, and only if an ORDER BY clause is specified. El orden devuelto de los registros enlazados es arbitrario.The returned order of tying records is arbitrary. ORDER BY no afecta a esta regla.ORDER BY does not affect this rule.

Procedimientos recomendadosBest Practices

En una instrucción SELECT, utilice siempre una cláusula ORDER BY con la cláusula TOP.In a SELECT statement, always use an ORDER BY clause with the TOP clause. Esta es la única manera de indicar previsiblemente a qué filas afecta TOP.This is the only way to predictably indicate which rows are affected by TOP.

Utilice OFFSET y FETCH en la cláusula ORDER BY en lugar de la cláusula TOP para implementar una solución de paginación de consulta.Use OFFSET and FETCH in the ORDER BY clause instead of the TOP clause to implement a query paging solution. Una solución de paginación (es decir, el envío de fragmentos o "páginas" de datos al cliente) es más fácil de implementar mediante OFFSET y FETCH.A paging solution (that is, sending chunks or "pages" of data to the client) is easier to implement using OFFSET and FETCH clauses. Para obtener más información, vea ORDER BY (cláusula de Transact-SQL).For more information, see ORDER BY Clause (Transact-SQL).

Utilice TOP (o bien, OFFSET y FETCH) en lugar de SET ROWCOUNT para limitar el número de filas devueltas.Use TOP (or OFFSET and FETCH) instead of SET ROWCOUNT to limit the number of rows returned. Estos métodos son preferibles a utilizar SET ROWCOUNT por las siguientes razones:These methods are preferred over using SET ROWCOUNT for the following reasons:

  • Como parte de una instrucción SELECT, el optimizador de consultas puede considerar el valor de expresión en las cláusulas TOP o FETCH durante la optimización de consultas.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. Dado que SET ROWCOUNT se usa fuera de una instrucción que ejecuta una consulta, su valor no se puede considerar en un plan de consulta.Because SET ROWCOUNT is used outside a statement that executes a query, its value cannot be considered in a query plan.

Soporte de compatibilidadCompatibility Support

Por compatibilidad con versiones anteriores, los paréntesis son opcionales en las instrucciones SELECT.For backward compatibility, the parentheses are optional in SELECT statements. Se recomienda utilizar siempre los paréntesis para TOP en las instrucciones SELECT por coherencia con su uso necesario en las instrucciones INSERT, UPDATE, MERGE y DELETE, en las que se requieren los paréntesis.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.

InteroperabilidadInteroperability

La expresión TOP no afecta a las instrucciones que se pueden ejecutar debido a un desencadenador.The TOP expression does not affect statements that may be executed because of a trigger. El insertar y eliminado tablas en los desencadenadores devolverá únicamente las filas verdaderamente afectadas por las instrucciones INSERT, UPDATE, MERGE o 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. Por ejemplo, si INSERT TRIGGER se desencadena como resultado de una instrucción INSERT que utilizó una cláusula TOP,For example, if an INSERT TRIGGER is fired as the result of an INSERT statement that used a TOP clause,

SQL ServerSQL Server permite actualizar las filas a través de las vistas. allows for updating rows through views. Dado que la cláusula TOP puede estar incluida en la definición de vista, es posible que algunas filas desaparezcan de la vista a causa de una actualización si las filas ya no cumplen con los requisitos de la expresión 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.

Cuando se especifica en la instrucción MERGE, la cláusula TOP se aplica después se combinen la tabla de origen completa y la tabla de destino completa y se quitan las filas combinadas que cumple los requisitos de inserción, actualización o acción de eliminación.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. La cláusula TOP reduce aún más el número de filas combinadas al valor especificado y se aplican las acciones de inserción, actualización o eliminación a las filas combinadas restantes de una manera desordenada.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. Es decir, no hay ningún orden en el que las filas se distribuyan entre las acciones definidas en las cláusulas WHEN.That is, there is no order in which the rows are distributed among the actions defined in the WHEN clauses. Por ejemplo, si especificar TOP (10) afecta a 10 filas; de estas filas, se pueden actualizar 7 e insertar 3, o se pueden eliminar 1, actualizar 5 e insertar 4, etc.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. Dado que la instrucción MERGE realiza exámenes de tabla completos de ambas tablas, de destino y de origen, el rendimiento de E/S puede verse afectado al utilizar la cláusula TOP para modificar una tabla grande mediante la creación de varios lotes.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. En este escenario, es importante asegurarse de que todos los lotes sucesivos tengan como destino nuevas filas.In this scenario, it is important to ensure that all successive batches target new rows.

Tenga precaución al especificar la cláusula TOP en una consulta que contiene un operador UNION, UNION ALL, EXCEPT o INTERSECT.Use caution when specifying the TOP clause in a query that contains a UNION, UNION ALL, EXCEPT, or INTERSECT operator. Es posible escribir una consulta que devuelva resultados inesperados porque el orden en el que se procesan lógicamente las cláusulas TOP y ORDER BY no siempre es intuitivo cuando estos operadores se utilizan en una operación Select.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. Por ejemplo, dados los siguientes datos y la siguiente tabla, suponga que desea devolver el coche rojo menos caro y el coche azul menos caro.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. Es decir, el sedán rojo y la camioneta azul.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');  

Para lograr estos resultados, podría escribir la siguiente consulta.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;  

El conjunto de resultados es el siguiente.Here is the result set.

Model Color Price

------------- ---------- -------

sedan red 10000.00

convertible blue 15000.00

Se devuelven resultados inesperados porque la cláusula TOP se ejecuta lógicamente antes que la cláusula ORDER BY, que ordena los resultados del operador (UNION ALL en este caso).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). Así, la consulta anterior devuelve cualquier coche rojo y cualquier coche azul y, a continuación, ordena el resultado de esa unión por el precio.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. En el siguiente ejemplo se muestra el método correcto de escribir esta consulta para lograr el resultado deseado.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;  

Utilizando TOP y ORDER BY en una operación de subselección, se puede asegurar de que los resultados de la cláusula ORDER BY que se utilizan se apliquen a la cláusula TOP y no a ordenar el resultado de la operación 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.

El conjunto de resultados es el siguiente.Here is the result set.

Model Color Price

------------- ---------- -------

sedan red 10000.00

van blue 8000.00

Limitaciones y restriccionesLimitations and Restrictions

Cuando se utiliza TOP con INSERT, UPDATE, MERGE o DELETE, las filas a las que hace referencia no están organizadas de ninguna manera y la cláusula ORDER BY no se puede especificar directamente en estas instrucciones.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. Si necesita usar TOP para insertar, eliminar o modificar las filas en un orden cronológico significativo, debe utilizar TOP junto con una cláusula ORDER BY que se especifica en una instrucción de subselección.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. Vea la sección Ejemplos que aparece más adelante en este tema.See the Examples section that follows in this topic.

TOP no se puede usar en las instrucciones UPDATE y DELETE en vistas con particiones.TOP cannot be used in an UPDATE and DELETE statements on partitioned views.

TOP no se puede combinar con OFFSET y FETCH en la misma expresión de consulta (en el mismo ámbito de la consulta).TOP cannot be combined with OFFSET and FETCH in the same query expression (in the same query scope). Para obtener más información, vea ORDER BY (cláusula de Transact-SQL).For more information, see ORDER BY Clause (Transact-SQL).

EjemplosExamples

CategoríaCategory Elementos de sintaxis ofrecidosFeatured syntax elements
Sintaxis básicaBasic syntax TOP • PERCENTTOP • PERCENT
Incluir valores equivalentesIncluding tie values WITH TIESWITH TIES
Limitar las filas afectadas por DELETE, INSERT o UPDATELimiting the rows affected by DELETE, INSERT, or UPDATE DELETE • INSERT • UPDATEDELETE • INSERT • UPDATE

Sintaxis básica Basic syntax

En los ejemplos de esta sección se muestra la funcionalidad básica de la cláusula ORDER BY con la sintaxis mínima requerida.Examples in this section demonstrate the basic functionality of the ORDER BY clause using the minimum required syntax.

A.A. Utilizar TOP con un valor constanteUsing TOP with a constant value

En los siguientes ejemplos se utiliza un valor constante para especificar el número de empleados que se devuelven en el conjunto de resultados de la consulta.The following examples use a constant value to specify the number of employees that are returned in the query result set. En el primer ejemplo, se devuelven las 10 primeras filas sin definir porque no se usa una cláusula ORDER BY.In the first example, the first 10 undefined rows are returned because an ORDER BY clause is not used. En el segundo ejemplo, se utiliza una cláusula ORDER BY para devolver los primeros 10 empleados contratados recientemente.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;  

B.B. Usar TOP con una variableUsing TOP with a variable

En el siguiente ejemplo se utiliza una variable para especificar el número de empleados que se devuelven en el conjunto de resultados de la consulta.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. Especificar un porcentajeSpecifying a percentage

En el siguiente ejemplo se utiliza PERCENT para especificar el número de empleados que se devuelven en el conjunto de resultados de la consulta.The following example uses PERCENT to specify the number of employees that are returned in the query result set. Hay 290 empleados en la tabla HumanResources.Employee.There are 290 employees in the HumanResources.Employee table. Dado que el 5 por ciento de 290 es un valor fraccionario, el valor se redondea al número entero siguiente.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;  

Incluir valores equivalentes Including tie values

A.A. Utilizar WITH TIES para incluir las filas que coinciden con los valores de la última filaUsing WITH TIES to include rows that match the values in the last row

En el ejemplo siguiente se obtiene el primer 10 por ciento de los empleados que tienen los salarios más altos y se devuelven en orden descendente de acuerdo con su salario.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. La especificación de WITH TIES garantiza que también se incluyan en el conjunto de resultados los empleados con salarios iguales al salario más bajo devuelto (la última fila), aun cuando esto exceda el 10 por ciento de los empleados.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;  

Limitar las filas afectadas por DELETE, INSERT o UPDATE Limiting the rows affected by DELETE, INSERT, or UPDATE

A.A. Utilizar TOP para limitar el número de filas eliminadasUsing TOP to limit the number of rows deleted

Cuando una parte superior (n) se utiliza la cláusula con la eliminación, la operación de eliminación se realiza en una selección sin definir de n número de filas.When a TOP (n) clause is used with DELETE, the delete operation is performed on an undefined selection of n number of rows. Es decir, la instrucción DELETE elige cualquier (n) número de filas que cumplen los criterios definidos en la cláusula WHERE.That is, the DELETE statement chooses any (n) number of rows that meet the criteria defined in the WHERE clause. En el ejemplo siguiente se eliminan 20 filas de la tabla PurchaseOrderDetail cuyas fechas de vencimiento son anteriores al 1 de julio de 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  

Si necesita utilizar TOP para eliminar filas por un orden cronológico significativo, debe utilizarla junto con ORDER BY en una instrucción de subselección.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. La siguiente consulta elimina de la tabla PurchaseOrderDetail las 10 filas con las fechas de vencimiento más antiguas.The following query deletes the 10 rows of the PurchaseOrderDetail table that have the earliest due dates. Para garantizar que solo se eliminen 10 filas, la columna especificada en la instrucción de subselección (PurchaseOrderID) es la clave principal de la tabla.To ensure that only 10 rows are deleted, the column specified in the subselect statement (PurchaseOrderID) is the primary key of the table. El uso de una columna sin clave en la instrucción de subselección podría causar la eliminación de más de 10 filas si la columna especificada contiene valores duplicados.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. Utilizar TOP para limitar el número de filas insertadasUsing TOP to limit the number of rows inserted

En el ejemplo siguiente se crea la tabla EmployeeSales y se inserta el nombre y los datos de ventas del año hasta la fecha para los 5 primeros empleados de la tabla 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. La instrucción INSERT elige 5 filas cualesquiera devueltas por la instrucción SELECT que cumplen los criterios definidos en la cláusula WHERE.The INSERT statement chooses any 5 rows returned by the SELECT statement that meet the criteria defined in the WHERE clause. La cláusula OUTPUT muestra las filas que se insertan en la tabla EmployeeSales.The OUTPUT clause displays the rows that are inserted into the EmployeeSales table. Observe que la cláusula ORDER BY de la instrucción SELECT no se utiliza para determinar los primeros 5 empleados.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;  

Si necesita usar TOP para insertar las filas en un orden cronológico significativo, debe utilizar TOP junto con ORDER BY en una instrucción de subselección, tal y como se muestra en el siguiente ejemplo.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. La cláusula OUTPUT muestra las filas que se insertan en la tabla EmployeeSales.The OUTPUT clause displays the rows that are inserted into the EmployeeSales table. Observe que los 5 primeros empleados se insertan ahora según los resultados de la cláusula ORDER BY en lugar de las filas sin definir.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;  

C.C. Utilizar TOP para limitar el número de filas actualizadasUsing TOP to limit the number of rows updated

En el ejemplo siguiente se usa la cláusula TOP para actualizar filas de una tabla.The following example uses the TOP clause to update rows in a table. Cuando una parte superior (n) se utiliza la cláusula con la actualización, la operación de actualización se realiza en un número indefinido de filas.When a TOP (n) clause is used with UPDATE, the update operation is performed on an undefined number of rows. Es decir, la instrucción UPDATE elige cualquier (n) número de filas que cumplen los criterios definidos en la cláusula WHERE.That is, the UPDATE statement chooses any (n) number of rows that meet the criteria defined in the WHERE clause. En el ejemplo siguiente se asignan 10 clientes de un vendedor a otro.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  

Si necesita usar TOP para aplicar actualizaciones según un orden cronológico significativo, debe usar TOP junto con ORDER BY en una instrucción de subselección.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. En el siguiente ejemplo se actualizan las horas de vacaciones de los 10 empleados cuyas fechas de alta son más antiguas.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  

Ejemplos: Almacenamiento de datos SQL de AzureAzure SQL Data Warehouse y Almacenamiento de datos paralelosParallel Data WarehouseExamples: Almacenamiento de datos SQL de AzureAzure SQL Data Warehouse and Almacenamiento de datos paralelosParallel Data Warehouse

El ejemplo siguiente devuelve las primeras 31 filas que coinciden con los criterios de búsqueda.The following example returns the top 31 rows that match the query criteria. El ORDER BY cláusula se utiliza para asegurarse de que los 31 devuelven filas son las primero 31 filas según un orden alfabético de la LastName columna.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.

Usar arriba sin especificar valores equivalentes.Using TOP without specifying ties.

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

Resultado: 31 filas se devuelven.Result: 31 rows are returned.

Utilizar TOP, especificando WITH TIES.Using TOP, specifying WITH TIES.

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

Resultado: se devuelven 33 filas, porque 3 empleados denominados Brown se enlazan en la fila 31.Result: 33 rows are returned, because 3 employees named Brown tie for the 31st row.

Vea tambiénSee 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)
ORDEN por cláusula ( Transact-SQL ) ORDER BY Clause (Transact-SQL)
SET ROWCOUNT ( Transact-SQL ) SET ROWCOUNT (Transact-SQL)
MERGE (Transact-SQL)MERGE (Transact-SQL)