Borrado de registros (2008-11-05)

05/11/2008 - 10:01 por Mauricio | Informe spam
Hola a todos,
tengo 2 tablas relacionadas 1 a M, ARCHIVOS e HISTORIA.
ARCHIVOS
|
|-->> HISTORIA

La tabla de HISTORIA está creciendo demasiado, así que quiero dejar
solo 20 registros de HISTORIA por cada ARCHIVO.
En la tabla HISTORIA tengo un ID, identity, y un campo FECHA. Cómo
sería la sentencia para borrar los registros y dejar los 20 más nuevos?
Muchas gracias desde ya.

Mauricio
Copenhague, Dinamarca
 

Leer las respuestas

#1 Carlos Sacristan
05/11/2008 - 11:12 | Informe spam
Si es SQL Server 2005 lo que tienes, puedes usar la función ROW_NUMBER() para
numerar los registros agrupando por archivo para luego borrar el resto. Algo
como

SELECT ROW_NUMBER() OVER(PARTITION BY archivo ORDER BY fecha) AS rn, *
FROM historia
ORDER BY rn, archivo

Para eliminar tan sólo tendrías que combinar esta select con tu delete,
filtrando por rn>20

"Mauricio" wrote:

Hola a todos,
tengo 2 tablas relacionadas 1 a M, ARCHIVOS e HISTORIA.
ARCHIVOS
|
|-->> HISTORIA

La tabla de HISTORIA está creciendo demasiado, así que quiero dejar
solo 20 registros de HISTORIA por cada ARCHIVO.
En la tabla HISTORIA tengo un ID, identity, y un campo FECHA. Cómo
sería la sentencia para borrar los registros y dejar los 20 más nuevos?
Muchas gracias desde ya.

Mauricio
Copenhague, Dinamarca



Preguntas similares