Tengo una base de datos con 1000 registros. Estoy tratando de crear una declaración SQL, de modo que si la cantidad de registros crece por encima de 1000, se eliminan los registros más antiguos (es decir, los registros nuevos que superan los 1000 'reemplazan' los registros más antiguos). Estoy usando SQLite, pero supongo que la sintaxis SQL habitual se ajustará aquí.Eliminar registros más antiguos de la base de datos
Respuesta
Si se utiliza un campo de incremento automático, puede escribir fácilmente esta opción para eliminar los más antiguos 100 registros:
DELETE FROM mytable WHERE id IN (SELECT id FROM mytable ORDER BY id ASC LIMIT 100)
O, si hay tal campo está presente, utilice ROWID
:
DELETE FROM mytable WHERE ROWID IN (SELECT ROWID FROM mytable ORDER BY ROWID ASC LIMIT 100)
O, para dejar sólo los últimos 1000 registros:
DELETE FROM mytable WHERE ROWID IN (SELECT ROWID FROM mytable ORDER BY ROWID DESC LIMIT -1 OFFSET 1000)
Gracias, pero necesitaba un ... límite -1 de compensación 1000 – Seven
Estaba pensando en usar esto también, pero ¿MySQL no usará finalmente los ID eliminados para que esto no funcione más? Dado que ID = 1 estará disponible, se creará una fila más nueva con ID = 1 y luego se eliminará primero ...? – NaturalBornCamper
Suponiendo que la tabla tiene una primaria Llave y una columna con una marca de tiempo que indica cuándo se inserta el registro), puede utilizar una consulta en la línea de
delete from tableToDeleteFrom
where tablePK in
(select tablePK
from tableToDeleteFrom
where someThresholdDate <= @someThresholdDate)
Para borrar todos los registros excepto el primer registro (min/max id) que puede utilizar:
SET @ls AS INT
SELECT @ls = MIN(id) FROM DATA
DELETE FROM DATA WHERE id <> @ls
¿Realmente responde la pregunta? – voromax
- 1. Eliminar registros antiguos en mongodb
- 2. Técnicas para eliminar datos antiguos en bases de datos Oracle
- 3. ¿Cómo eliminar los dispositivos innecesarios más antiguos?
- 4. ¿Por qué algunas conexiones mysql seleccionan datos antiguos de la base de datos mysql después de eliminar + insertar?
- 5. Eliminar divs antiguos si hay más de 20 | jQuery
- 6. mysql selecciona SOLAMENTE registros duplicados de la base de datos
- 7. Eliminar número N de los registros antiguos de la tabla en MySQL
- 8. Python - eliminar archivos antiguos
- 9. Guardando más de 1000 registros en la base de datos a la vez
- 10. Eliminar registros de la base de datos con una solicitud de Ajax
- 11. Eliminar archivos que son más antiguos que algunos días
- 12. Android: Eliminar toda la base de datos
- 13. Script de Powershell para eliminar archivos antiguos
- 14. RestKit eliminar los datos antiguos de los datos principales utilizando setObjectMapping
- 15. iPhone: ¿Eliminar/eliminar la base de datos SQLite?
- 16. SQLite eliminar el último 25% de los registros en una base de datos
- 17. ¿Cómo eliminar más rápido?
- 18. Encontrar huecos (registros faltantes) en los registros de la base de datos usando SQL
- 19. Eliminar caracteres especiales de un campo de base de datos
- 20. ¿Cómo puedo eliminar todos los registros en una base de datos en CouchDB?
- 21. ¿Cómo seleccionar los primeros registros 'N' de una base de datos que contiene millones de registros?
- 22. Cómo limpiar la base de datos, descartando todos los registros usando sqlalchemy?
- 23. ¿Cómo eliminar desde una base de datos?
- 24. Cómo eliminar registros de SQLite para iPhone
- 25. Eliminar registros duplicados de la vista
- 26. rieles eliminar modelos antiguos con migraciones
- 27. Con archivos .ics, ¿puedo eliminar eventos antiguos?
- 28. Archivar grandes cantidades de datos antiguos en SQL Server
- 29. Insertar registros de conjunto de datos en la base de datos
- 30. ¿Cómo puedo borrar los datos antiguos de logcat?
Puede obtener más respuestas si incluye algunos detalles del esquema de la tabla. – serg10
Es posible que desee proporcionar más información. ¿Como tienes una marca de tiempo en las columnas? ¿El ID es un GUID o un incremento automático? ¿Cuál es su objetivo para eliminar todas las fechas anteriores a X o existe un límite de 1000 registros? o ¿cuál es el motivo para eliminar estos registros? Podemos responder mejor a tu pregunta entonces. –
Ah, y ¿cuál es tu campo clave principal? o incluso tienes uno? –