Ich habe eine Datenbank mit 1000 Datensätzen. Ich versuche eine SQL-Anweisung zu erstellen. Wenn also die Anzahl der Datensätze über 1000 ansteigt, werden die ältesten Datensätze gelöscht (d. H. Die neuen Datensätze über 1000 ersetzen die ältesten Datensätze). Ich benutze SQLite, aber ich nehme an, dass die übliche SQL-Syntax hier passt.Lösche älteste Datensätze aus der Datenbank
Antwort
Wenn Sie ein Auto-increment-Feld verwenden, können Sie einfach das schreiben die ältesten 100 Datensätze zu löschen:
DELETE FROM mytable WHERE id IN (SELECT id FROM mytable ORDER BY id ASC LIMIT 100)
Oder, wenn kein solches Feld vorhanden ist, verwenden ROWID
:
DELETE FROM mytable WHERE ROWID IN (SELECT ROWID FROM mytable ORDER BY ROWID ASC LIMIT 100)
Oder nur die neuesten 1000 Datensätze zu verlassen:
DELETE FROM mytable WHERE ROWID IN (SELECT ROWID FROM mytable ORDER BY ROWID DESC LIMIT -1 OFFSET 1000)
Danke, aber ich brauchte ein ... Limit -1 Offset 1000 – Seven
Ich dachte darüber nach, dies auch zu verwenden, aber wird MySQL nicht die zuvor gelöschten IDs verwenden, so dass dies nicht mehr funktioniert? Da ID = 1 verfügbar wird, wird eine neuere Zeile mit ID = 1 erstellt und dann zuerst gelöscht. – NaturalBornCamper
Unter der Annahme, dass Ihre Tabelle einen Primär hat Key und eine Spalte mit einem Zeitstempel anzeigt, wenn der Datensatz eingefügt wurde), können Sie eine Abfrage nach dem Vorbild der
delete from tableToDeleteFrom
where tablePK in
(select tablePK
from tableToDeleteFrom
where someThresholdDate <= @someThresholdDate)
verwenden für alle Datensätze außer dem ersten Datensatz (min/max id) löschen Sie verwenden können:
SET @ls AS INT
SELECT @ls = MIN(id) FROM DATA
DELETE FROM DATA WHERE id <> @ls
Ist es wirklich die Frage beantwortet? – voromax
- 1. Wie lösche ich das älteste Unterverzeichnis?
- 2. Transfering MySQL Datensätze aus der Datenbank zu Datenbank
- 3. InitRow = true Lösche alle Datensätze
- 4. Wie wähle ich nur gefüllte Datensätze aus der Datenbank aus?
- 5. Wie lösche ich aus einer Datenbank?
- 6. Wie lösche ich eine Datenbank aus Firebase?
- 7. Wie lösche ausgewählte Zeile aus der Datenbank mit PHP, js?
- 8. Anzeige ausgewählter Datensätze aus einer Datenbank
- 9. Lösche Buchstaben aus der Zeichenfolge
- 10. Datensätze aus der Datenbank mit Hintergrundprozess in C# abrufen?
- 11. Wie löscht man viele Datensätze aus der SQL-Datenbank schnell?
- 12. Wählen Sie Datensätze mit definierten Symbolen aus der Datenbank beginnen
- 13. Wie 1 Million Datensätze aus der Datenbank schnell geladen werden?
- 14. Wie kann ich die Datensätze aus der Datenbank in PHP
- 15. Datensätze gelöscht aus der Datenbank beim Hochladen von Dateien
- 16. Kann nicht mehrere Datensätze aus der Datenbank in CakePHP abrufen
- 17. Wie lösche "Duplicate" Datensätze in MySQL?
- 18. älteste Diskrepanz?
- 19. Datenbank Datensätze löschen
- 20. Wählen Sie Datensätze älter als neuestes 100 Datensätze aus der Datenbank
- 21. Wie lösche ich ein Problem in der SonarQube-Datenbank?
- 22. bereinigen "DeletedDatabaseRecords" aus der Datenbank
- 23. Wie lösche ich eine Zeile sicher aus einer Datenbank?
- 24. Immer 1000 Datensätze in der Datenbank speichern
- 25. Was passiert, wenn ich die Datenbank "information_schema" aus mySQL lösche?
- 26. Wie lösche ich Datensätze aus einer untergeordneten Sammlung in LINQ to SQL?
- 27. Lösche Prädikate aus der Liste in Prolog
- 28. Lösche alle Daten aus der Gridview
- 29. SQl Lösche die obersten 100 aus der Tabelle
- 30. PHP - Anzahl der verschiedenen Datensätze (Daten) in der Datenbank
Sie können weitere Antworten erhalten, wenn Sie einige Tabellenschemadetails angeben. – serg10
Sie können weitere Informationen angeben. Wie hast du einen Zeitstempel auf den Spalten? Ist die ID eine GUID oder ein Autoinkrement? Was ist Ihr Ziel, um alle älteren X-Datum zu entfernen oder gibt es ein Limit von 1000 Datensätze? oder was ist der Grund für das Löschen dieser Datensätze? Wir können Ihre Frage dann besser beantworten. –
Oh, und was ist dein Primärschlüsselfeld? oder hast du sogar einen? –