Tengo una base de datos SQLite que necesito hacer lo siguiente: Mantener solo los últimos N registros, ordenados por fecha. ¿Cómo haces eso?Guarde solo N últimos registros en la base de datos SQLite, ordenados por fecha
Respuesta
Para borrar todo menos los últimos 10 registros.
delete
from test
where id not in (
select id
from test
order by date desc
limit 10
)
De acuerdo con la SQLite documentation:
Si SQLite se compila con la opción de tiempo de compilación SQLITE_ENABLE_UPDATE_DELETE_LIMIT, la sintaxis de la instrucción DELETE se extiende mediante la adición de ORDER BY y cláusulas límite.
(...)
Si la sentencia DELETE tiene una cláusula ORDER BY, a continuación, todas las filas que se suprimirían en ausencia de la cláusula LIMIT se ordenan de acuerdo con el ORDER BY. Las primeras M filas, donde M es el valor encontrado al evaluar la expresión cláusula OFFSET, se omiten, y se eliminan las siguientes N, donde N es el valor de la expresión LIMIT. Si quedan menos de N filas después de tener en cuenta la cláusula OFFSET, o si la cláusula LIMIT se evalúa a un valor negativo, entonces se eliminan todas las filas restantes.
Esto permitirá escribir:
DELETE FROM table WHERE expr ORDER BY date DESC LIMIT -1 OFFSET 10
~ "Si quedan menos de N filas". ¿Qué significa -1 aquí? –
@IgorGanapolsky Observe la última frase del párrafo citado: _si la cláusula LIMIT se evalúa con un valor negativo, entonces todas las filas restantes se eliminan_. –
Entonces, si hay menos de 10 filas en la tabla, ¿se borrarán todas? –
mantener sólo los últimos 10 registros, creo invertida.
Para eliminar los registros de más edad 10:
DELETE FROM Table_name
WHERE date in (SELECT date FROM Table_name ORDER BY Date Desc Limit -1
OFFSET (select count(*)-10 from Table_name));
quiero saber cómo ha funcionado para usted!
¿La fecha debe tener un formato determinado, como aaaa-mm-dd? –
Asumiendo que tiene una columna id
que es un número secuencial (AUTO INCREMENT
), puede utilizar el siguiente:
DELETE FROM table_name
WHERE id < (
SELECT MIN(id)
FROM (SELECT id
FROM table_name
ORDER BY id DESC
LIMIT num_of_records_to_keep))
La misma consulta se puede utilizar cuando se utiliza una columna de marca de tiempo (simplemente reemplazar id
con su marca de tiempo columna)
- 1. Seleccione `n` últimos registros insertados en la tabla - oracle
- 2. Rieles 3- Recuperar los últimos N registros
- 3. Seleccionar los N registros ordenados por X, pero tener resultados en orden inverso
- 4. SQLite: base de datos de solo lectura
- 5. ¿Cómo hacer coincidir solo los últimos registros actualizados en Doctrine?
- 6. Cómo eliminar los últimos 10 registros en sqlite
- 7. LINQ para seleccionar últimos registros
- 8. ¿Cómo seleccionar los primeros registros 'N' de una base de datos que contiene millones de registros?
- 9. Eliminar los últimos N caracteres del campo en una base de datos SQL Server
- 10. ¿Por qué usar la base de datos sqlite en Android?
- 11. Colección de Java que mantiene solo n últimos miembros insertados
- 12. Android: guarde el objeto android.net.Uri en la base de datos
- 13. ¿Cómo guardo una lista de solo los últimos n objetos?
- 14. Eliminar las primeras N filas en la base de datos sqlite de Android
- 15. ¿Cómo puedo recuperar los datos del mes específico de la base de datos SQLite?
- 16. Eliminar registros más antiguos de la base de datos
- 17. cómo reducir la base de datos sqlite?
- 18. Seguridad de la base de datos Sqlite
- 19. Forma óptima de almacenar valores de fecha y hora en la base de datos SQLite (Delphi)
- 20. ¿Obtiene las últimas N filas en la base de datos en orden?
- 21. ¿Puedo encriptar la base de datos SQLite?
- 22. Crear base de datos SQLite en android
- 23. Base de datos SQLite en tarjeta SD
- 24. Capacidad máxima de almacenamiento de la base de datos SQLite
- 25. ¿Cómo insertar datos en la base de datos SQLite en android?
- 26. Base de datos SQLite en Javascript localmente
- 27. Actualización de la base de datos sqlite cuando la base de datos del servidor se actualiza
- 28. fecha Hibernate no guarde los milisegundos
- 29. Android explore la base de datos SQLite en el teléfono
- 30. base de datos sqlite no creada
Necesita las columnas, si las hay, son autoincrement ... –
Duplicado: http://stackoverflow.com/q/1977341/132382 – pilcrow