elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  Bases de Datos (Moderador: Carloswaldo)
| | | |-+  Eliminar todo menos 100 líneas
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Eliminar todo menos 100 líneas  (Leído 3,161 veces)
dimitrix


Desconectado Desconectado

Mensajes: 4.847



Ver Perfil WWW
Eliminar todo menos 100 líneas
« en: 7 Enero 2016, 13:43 pm »

¡Hola amigos!

Os escribo para ver si me podéis ayudar a encontrar la query más limpia para el siguiente caso.

Tengo un listado de libros por categorías que se va actualizando, por ejemplo:

Código:

ID Category Título Time
--------------------------------------------------
1 nature amor de árbol 1456578945
2 nature pajas camperas 1456578946
3 nature El sol 1456578947
...
241 hackers Alex en la red 1456578948
242 hackers Peibol Gay 1456578949
243 hackers El binario 1456578950
...
571 love Yo y mi mano 1456579501
572 love Mu hetero 1456579502
573 love Love&Pajas 1456579503

Y necesito hacer una query que elimine todos menos los 100 últimos de cada categoría (pensar que el time es el timestamp de la hora que se ha añadido).

La gracia está en que se pudiera hacer en una sola query ¿Cómo lo haríais vosotros?


En línea




Shell Root
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.724


<3


Ver Perfil WWW
Re: Eliminar todo menos 100 líneas
« Respuesta #1 en: 7 Enero 2016, 13:49 pm »

Se puede limitar el número de filas eliminadas mediante TOP, así que yo pensaría hacer una subconsulta que haga un COUNT() y de ahí restarle 100 y realizar el DELETE.

PD: No tengo SQL Server aqui en este equipo para realizar pruebas, pero eso se me ocurre.


En línea

Te vendería mi talento por poder dormir tranquilo.
dimitrix


Desconectado Desconectado

Mensajes: 4.847



Ver Perfil WWW
Re: Eliminar todo menos 100 líneas
« Respuesta #2 en: 7 Enero 2016, 13:57 pm »

Ahora mismo estoy usando MySQL, te agradecería a ver si luego puedes hechar un ojo pues no me sale en una sola query.

Creo que la gracia sería una query con una subquery con otra subquery, creo que esto se parece cada vez más a Origen (la película).

DELETE FROM libros WHERE ID IN (SELECT ID FROM LIBROS WHERE (SubQuery 2))
En línea




peib0l
Wiki

Desconectado Desconectado

Mensajes: 3.493


freedom


Ver Perfil WWW
Re: Eliminar todo menos 100 líneas
« Respuesta #3 en: 7 Enero 2016, 14:11 pm »


Espero que esto te sirva:

DELETE FROM libros WHERE ID NOT IN (SELECT ID FROM LIBROS ORDER BY id DESC LIMIT 100 )
En línea

Shell Root
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.724


<3


Ver Perfil WWW
Re: Eliminar todo menos 100 líneas
« Respuesta #4 en: 7 Enero 2016, 14:20 pm »

Mi 2da pelicula favorita después de Hombre en Llamas jajaja

Código
  1. DELETE FROM TABLE LIMIT ((SELECT COUNT(*) FROM TABLE)-100)

Así lo pensaba yo
En línea

Te vendería mi talento por poder dormir tranquilo.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Eliminar lineas en Blanco de un TXT
Programación C/C++
Jupiter34 7 10,191 Último mensaje 29 Octubre 2012, 17:02 pm
por rir3760
Batch que copie todas las lineas menos la ultima
Scripting
santi810 1 2,077 Último mensaje 27 Diciembre 2013, 19:37 pm
por Eleкtro
Eliminar lineas que no cumplan condición
Scripting
Afkael 4 3,235 Último mensaje 2 Junio 2014, 16:28 pm
por Afkael
Eliminar líneas de texto contenidas.
Dudas Generales
MA40 0 2,600 Último mensaje 16 Octubre 2016, 22:59 pm
por MA40
Eliminar lineas archivo txt
Scripting
Wiliam678 8 3,291 Último mensaje 15 Noviembre 2018, 14:14 pm
por Wiliam678
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines