En SQL Server, la sentencia DELETE se utiliza para eliminar filas de una tabla. Sin embargo, a veces es necesario eliminar solo un número específico de filas, como las primeras N filas. Para lograr esto, se puede utilizar la cláusula TOP en combinación con la sentencia DELETE.
DELETE TOP: Sintaxis básica
La sintaxis básica para utilizar DELETE TOP es la siguiente:
DELETE TOP (N) FROM nombre_tabla
Donde N es el número de filas que se desean eliminar y nombre_tabla es el nombre de la tabla de la cual se eliminarán las filas.
Por ejemplo, si queremos eliminar las primeras 10 filas de la tabla «clientes», la sentencia sería:
DELETE TOP (10) FROM clientes
Esta sentencia eliminará las primeras 10 filas de la tabla «clientes». Es importante tener en cuenta que no hay garantía de qué filas específicas se eliminarán, ya que esto depende del orden en que se almacenan los datos en la tabla.
DELETE TOP con ORDER BY
Si se desea eliminar las primeras N filas de una tabla en un orden específico, se puede utilizar la cláusula ORDER BY junto con DELETE TOP. La sintaxis sería la siguiente:
DELETE TOP (N) FROM nombre_tabla ORDER BY columna_ordenamiento
Donde N es el número de filas a eliminar, nombre_tabla es el nombre de la tabla y columna_ordenamiento es la columna por la cual se desea ordenar los datos.
Por ejemplo, si queremos eliminar las primeras 5 filas de la tabla «productos» ordenadas por el precio en orden descendente, la sentencia sería:
DELETE TOP (5) FROM productos ORDER BY precio DESC
Esta sentencia eliminará las primeras 5 filas de la tabla «productos» en función del precio, comenzando por el más alto.
DELETE TOP con WHERE
Si se desea eliminar las primeras N filas que cumplan con una condición específica, se puede utilizar la cláusula WHERE junto con DELETE TOP. La sintaxis sería la siguiente:
DELETE TOP (N) FROM nombre_tabla WHERE condicion
Donde N es el número de filas a eliminar, nombre_tabla es el nombre de la tabla y condicion es la condición que deben cumplir las filas a eliminar.
Por ejemplo, si queremos eliminar las primeras 3 filas de la tabla «empleados» donde el salario sea mayor a 5000, la sentencia sería:
DELETE TOP (3) FROM empleados WHERE salario > 5000
Esta sentencia eliminará las primeras 3 filas de la tabla «empleados» que cumplan con la condición especificada.
DELETE TOP con JOIN
Si se desea eliminar las primeras N filas de una tabla basándose en una relación con otra tabla, se puede utilizar la cláusula JOIN junto con DELETE TOP. La sintaxis sería la siguiente:
DELETE TOP (N) FROM nombre_tabla1 JOIN nombre_tabla2 ON condicion
Donde N es el número de filas a eliminar, nombre_tabla1 es el nombre de la tabla principal y nombre_tabla2 es el nombre de la tabla con la cual se desea hacer la relación. La condicion es la condición que debe cumplirse para que se realice la eliminación.
Por ejemplo, si queremos eliminar las primeras 2 filas de la tabla «pedidos» que estén relacionadas con la tabla «clientes» a través del campo «id_cliente», la sentencia sería:
DELETE TOP (2) FROM pedidos JOIN clientes ON pedidos.id_cliente = clientes.id
Esta sentencia eliminará las primeras 2 filas de la tabla «pedidos» que estén relacionadas con la tabla «clientes» a través del campo «id_cliente».
DELETE TOP con subconsulta
Si se desea eliminar las primeras N filas de una tabla basándose en una subconsulta, se puede utilizar una subconsulta junto con DELETE TOP. La sintaxis sería la siguiente:
DELETE TOP (N) FROM nombre_tabla WHERE columna IN (subconsulta)
Donde N es el número de filas a eliminar, nombre_tabla es el nombre de la tabla y subconsulta es la subconsulta que se utilizará para determinar las filas a eliminar.
Por ejemplo, si queremos eliminar las primeras 4 filas de la tabla «productos» que tengan un precio mayor al promedio de todos los productos, la sentencia sería:
DELETE TOP (4) FROM productos WHERE precio > (SELECT AVG(precio) FROM productos)
Esta sentencia eliminará las primeras 4 filas de la tabla «productos» que tengan un precio mayor al promedio de todos los productos.
La sintaxis para eliminar las primeras filas de una tabla en SQL Server utilizando DELETE TOP puede variar dependiendo de los requisitos específicos. Se puede utilizar la cláusula ORDER BY para especificar un orden de eliminación, la cláusula WHERE para especificar una condición de eliminación, la cláusula JOIN para eliminar filas basadas en una relación con otra tabla, o una subconsulta para determinar las filas a eliminar.