Published on

January 17, 2021

Comprendiendo las consultas SELECT TOP de SQL Server

En este artículo, exploraremos el concepto de las consultas SELECT TOP de SQL y cómo se pueden utilizar para limitar el conjunto de resultados de una consulta. También proporcionaremos ejemplos para reforzar el aprendizaje.

Introducción

La cláusula TOP en SQL Server nos permite limitar el número de filas devueltas por una consulta. Se puede utilizar para recuperar un número específico de filas o un porcentaje de filas de una tabla. La cláusula TOP se utiliza a menudo en conjunto con la cláusula ORDER BY para asegurar un cierto orden del conjunto de resultados.

Sintaxis

La sintaxis de la cláusula TOP es la siguiente:

SELECT TOP (expresión) [PORCENTAJE] [CON LAZOS]
FROM nombre_tabla

El parámetro expresión define cuántas filas se devuelven de la consulta. Por ejemplo, para recuperar las primeras 10 filas de una tabla, podemos establecer la expresión como 10.

Ejemplos

Veamos algunos ejemplos para entender cómo funciona la cláusula TOP.

Ejemplo 1: Recuperar un número específico de filas

SELECT TOP (5) Nombre, NumeroProducto, CostoEstandar
FROM Produccion.Producto;

En este ejemplo, recuperamos 5 filas aleatorias de la tabla Producto.

Ejemplo 2: Recuperar un porcentaje de filas

SELECT TOP (20) PORCENTAJE Nombre, NumeroProducto, CostoEstandar
FROM Produccion.Producto;

En este ejemplo, recuperamos el 20 por ciento de las filas de la tabla Producto.

Ejemplo 3: Utilizar la palabra clave CON LAZOS

SELECT TOP (1) CON LAZOS Nombre, NumeroProducto, CostoEstandar
FROM Produccion.Producto
ORDER BY CostoEstandar DESC;

La palabra clave CON LAZOS nos permite incluir filas en el conjunto de resultados que tienen el mismo valor que la última fila. En este ejemplo, la consulta devolverá todas las filas que tienen el mismo costo que el producto de mayor costo.

Utilizando Variables con la Cláusula TOP

También podemos utilizar variables con la cláusula TOP para establecer dinámicamente el número de filas que se devolverán. Aquí tienes un ejemplo:

DECLARE @Val AS INT
SET @Val = 3

SELECT TOP (@Val) Nombre, NumeroProducto, CostoEstandar
FROM Produccion.Producto
ORDER BY CostoEstandar DESC;

En este ejemplo, asignamos un valor a la variable @Val y la consulta devolverá las primeras @Val filas que coincidan con el valor asignado.

Utilizando TOP con las Sentencias UPDATE y DELETE

La cláusula TOP también se puede utilizar con las sentencias UPDATE y DELETE para limitar el número de filas afectadas por la operación.

Sentencia UPDATE

UPDATE TOP (10) Produccion.ListaColoresProducto
SET Color = 'Rosa';

En este ejemplo, la sentencia de actualización solo afectará a las primeras 10 filas de la tabla ListaColoresProducto.

Sentencia DELETE

DELETE TOP (1)
FROM Produccion.ListaColoresProducto;

En este ejemplo, se eliminará una fila aleatoria de la tabla ListaColoresProducto.

Comparación con SET ROWCOUNT y ROW_NUMBER

Existen formas alternativas de lograr resultados similares a la cláusula TOP.

SET ROWCOUNT

La opción SET ROWCOUNT limita el número de filas devueltas por una consulta. Sin embargo, es importante tener en cuenta que no considera el optimizador de consultas y puede tener un peor rendimiento en comparación con la cláusula TOP.

SET ROWCOUNT 4

SELECT Nombre, NumeroProducto, CostoEstandar
FROM Produccion.Producto;

En este ejemplo, la consulta procesará todo el conjunto de resultados pero solo devolverá 4 filas.

Función ROW_NUMBER

La función ROW_NUMBER asigna números temporales al conjunto de resultados de una consulta. Se puede utilizar como alternativa a la cláusula TOP.

SELECT *
FROM (
    SELECT Nombre, NumeroProducto, CostoEstandar, ROW_NUMBER() OVER (ORDER BY CostoEstandar DESC) AS RN
    FROM Produccion.Producto
) AS TMP_TBL
WHERE RN <= 4;

En este ejemplo, la consulta devolverá las primeras 4 filas de la tabla Producto.

Conclusión

En este artículo, hemos discutido las consultas SELECT TOP de SQL y cómo se pueden utilizar para limitar el conjunto de resultados de una consulta. También hemos explorado algunas alternativas a la cláusula TOP. Comprender la cláusula TOP es esencial para controlar el número de filas devueltas por una consulta y optimizar el rendimiento de la consulta.

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.