J'ai une base de données avec 1000 enregistrements. J'essaie de créer une instruction SQL, donc si le nombre d'enregistrements dépasse 1000, les enregistrements les plus anciens sont supprimés (c'est-à-dire que les nouveaux enregistrements au-dessus de 1000 'remplacent' les enregistrements les plus anciens). J'utilise SQLite, mais je suppose que la syntaxe SQL habituelle va ici.Supprimer les enregistrements les plus anciens de la base de données
Répondre
Si vous utilisez un champ incrémentation automatique, vous pouvez facilement écrire cette option pour supprimer les plus anciens 100 enregistrements:
DELETE FROM mytable WHERE id IN (SELECT id FROM mytable ORDER BY id ASC LIMIT 100)
Ou, si aucun champ est présent, utilisez ROWID
:
DELETE FROM mytable WHERE ROWID IN (SELECT ROWID FROM mytable ORDER BY ROWID ASC LIMIT 100)
Ou, pour ne laisser que les 1000 derniers enregistrements:
DELETE FROM mytable WHERE ROWID IN (SELECT ROWID FROM mytable ORDER BY ROWID DESC LIMIT -1 OFFSET 1000)
Merci, mais j'avais besoin d'un ... limite -1 offset 1000 – Seven
Je pensais à l'utiliser aussi, mais MySQL n'utilisera-t-il pas éventuellement les ID précédemment supprimés pour que ça ne marche plus? Puisque ID = 1 sera disponible, une ligne plus récente sera créée avec ID = 1, puis sera supprimée en premier. – NaturalBornCamper
en supposant que votre table a une primaire Clé et une colonne avec un horodatage indiquant le moment où l'enregistrement a été inséré), vous pouvez utiliser une requête le long des lignes de
delete from tableToDeleteFrom
where tablePK in
(select tablePK
from tableToDeleteFrom
where someThresholdDate <= @someThresholdDate)
Pour supprimer tous les enregistrements à l'exception du premier enregistrement (min/id max), vous pouvez utiliser:
SET @ls AS INT
SELECT @ls = MIN(id) FROM DATA
DELETE FROM DATA WHERE id <> @ls
Est-ce que ça répond vraiment à la question? – voromax
- 1. SQL pour supprimer les enregistrements les plus anciens d'une table
- 2. Comment supprimer automatiquement les anciens enregistrements d'une table de base de données?
- 3. Solr renvoie les enregistrements les plus anciens au lieu de 'plus récent'; Paramètres 'Rows' et 'Start'
- 4. Quel est le moyen le plus rapide pour supprimer les anciens enregistrements
- 5. Supprimer les anciens fichiers de sauvegarde
- 6. Comment supprimer les enregistrements de la table?
- 7. Supprimer les enregistrements de la base de données Access, erreur lors de la suppression
- 8. comment puis-je écrire storec proc qui supprimer les anciens enregistrements de plus de 90 jours de table1 et table2
- 9. Sqlite3 base de données rails comment supprimer tous les enregistrements de la ligne de commande
- 10. script bash pour supprimer les anciens déploiements
- 11. supprimer toutes les données de la base de données sphinx
- 12. Supprimer les enregistrements de la base de données avec une requête Ajax
- 13. ActiveMQ: comment supprimer les anciens messages?
- 14. transfering MySQL Les enregistrements de base de données à la base de données
- 15. KML et supprimer les anciens fichiers KML
- 16. supprime les anciens enregistrements et conserve les 10 derniers en format compact
- 17. Symfony - Supprimer et recharger tous les enregistrements de base de données pour chaque test
- 18. Ne pas supprimer les fichiers les plus anciens dans le répertoire ASP.NET
- 19. utilisant ajax supprimer les enregistrements forment mysql
- 20. Supprimer les enregistrements avec SQL
- 21. Sélectionner les plus récents enregistrements de la table
- 22. MySQL supprimer les doublons de grande base de données rapide
- 23. Supprimer les enregistrements dans le déclencheur Au lieu de supprimer
- 24. Trouver des fichiers plus anciens que X et les compter
- 25. Django + AppEngine comptant plus les 1000 enregistrements
- 26. Comment supprimer tous les index de base de données d'une base de données SQL Server
- 27. Utilisation de LINQ pour supprimer automatiquement les enregistrements enfants
- 28. Supprimer les enregistrements expirés dans la syntaxe de requête solr
- 29. Enregistrement de plus de 1000 enregistrements dans la base de données à la fois
- 30. Supprimer tous les enregistrements dans NSManagedObjectContext
Vous obtiendrez peut-être plus de réponses si vous incluez des détails de schéma de table. – serg10
Vous pouvez fournir plus d'informations. Comme avez-vous un horodatage sur les colonnes? L'identifiant est-il un GUID ou un incrément automatique? Quel est votre objectif pour supprimer toutes les dates plus anciennes que X ou y a-t-il une limite de 1000 enregistrements? ou quelle est la raison de la suppression de ces enregistrements? Nous pouvons mieux répondre à votre question ensuite. –
Oh et quel est votre champ clé primaire? ou en avez-vous même un? –