Mam bazę danych z 1000 rekordami. Próbuję utworzyć instrukcję SQL, więc jeśli liczba rekordów przekroczy 1000, to najstarsze rekordy zostaną usunięte (tj. Nowe rekordy powyżej 1000 'zastępują' najstarsze rekordy). Używam SQLite, ale zakładam, że będzie tu pasować standardowa składnia SQL.Usuwanie najstarszych rekordów z bazy danych
Odpowiedz
Jeśli używasz pola automatycznego przyrostu, można łatwo napisać to usunąć najstarsze 100 rekordów:
DELETE FROM mytable WHERE id IN (SELECT id FROM mytable ORDER BY id ASC LIMIT 100)
lub, jeśli nie ma takiego pola jest obecny, należy ROWID
:
DELETE FROM mytable WHERE ROWID IN (SELECT ROWID FROM mytable ORDER BY ROWID ASC LIMIT 100)
Albo zostawić tylko ostatnie 1000 rekordy:
DELETE FROM mytable WHERE ROWID IN (SELECT ROWID FROM mytable ORDER BY ROWID DESC LIMIT -1 OFFSET 1000)
Dzięki, ale potrzebowałem ... limitu -1 przesunięcia 1000 – Seven
Myślałem również o użyciu tego, ale czy MySQL nie użyje wcześniej usuniętych identyfikatorów, więc to już nie zadziała? Ponieważ ID = 1 stanie się dostępny, zostanie utworzony nowy wiersz o ID = 1, a następnie zostanie usunięty ...? – NaturalBornCamper
Zakładając, że stół ma podstawowy Klucz i kolumna z datownik wskazujący, gdy płyta została włożona), można użyć kwerendy wzdłuż linii
delete from tableToDeleteFrom
where tablePK in
(select tablePK
from tableToDeleteFrom
where someThresholdDate <= @someThresholdDate)
Aby usunąć wszystkie rekordy z wyjątkiem pierwszego rekordu (min/max id) można użyć:
SET @ls AS INT
SELECT @ls = MIN(id) FROM DATA
DELETE FROM DATA WHERE id <> @ls
Czy to naprawdę odpowiada na pytanie? – voromax
- 1. Usuwanie rekordów z bazy danych za pomocą żądania Ajax
- 2. Usuwanie kolumny nie zmniejsza rozmiaru bazy danych
- 3. Usuwanie duplikatów rekordów z tabeli
- 4. pymongo: usuwanie rekordów elegancko
- 5. Usuwanie wielu rekordów z konsoli Railsowej
- 6. Usuwanie z tabeli z milionami rekordów
- 7. Usuwanie duplikatów rekordów w PostgreSQL
- 8. mysql wybierz TYLKO duplikaty rekordów z bazy danych
- 9. Archiwizowanie rekordów z bazy danych PostgreSQL przekraczających linię czasu
- 10. Usuwanie bazy danych po usunięciu Konta
- 11. Usuwanie wszystkich powiązanych rekordów z wielu tabel
- 12. Usuwanie rekordów przed określoną datą
- 13. Szyny - usuwanie niezapisanych powiązanych rekordów
- 14. Usuwanie wsadowe/czyszczenie rekordów za pośrednictwem Java ORM
- 15. Dedupowanie rekordów bazy danych porównujących wartości w różnych polach
- 16. Dynamiczne tworzenie nowych modeli rekordów aktywnych i tabel bazy danych
- 17. Zapisywanie ponad 1000 rekordów do bazy danych w czasie
- 18. Usuwanie powiązanych rekordów w Yii2 - najlepsze praktyki
- 19. Usuwanie danych z LocalStorage
- 20. Projektowanie bazy danych - miliardy rekordów w jednym stole?
- 21. Jak ... Wyświetlanie danych z bazy
- 22. Usuwanie rekordów z tabeli programu SQL Server bez kursora
- 23. Usuwanie zduplikowanych rekordów w SQL Server
- 24. Usuwanie ogromnych ilości danych z ogromnego stołu
- 25. Usuwanie (wtórnego) pliku pomocniczego bazy danych SQL Server
- 26. Zapytanie SQL do usuwania najstarszych wierszy powyżej pewnej liczby wierszy?
- 27. Wydajność bazy Firebase z dużymi zbiorami danych
- 28. Usuwanie danych z pliku HDF5
- 29. Usuwanie danych z tabel zależnych
- 30. Usuwanie encji html z baz danych
Możesz uzyskać więcej odpowiedzi, jeśli podasz szczegóły schematu tabeli. – serg10
Możesz chcieć podać więcej informacji. Jak masz znacznik czasu na kolumnach? Czy identyfikator to GUID czy auto increment? jaki jest twój cel, aby usunąć wszystkie starsze niż X daty lub czy istnieje limit 1000 rekordów? lub jaki jest powód usuwania tych rekordów? Możemy lepiej odpowiedzieć na twoje pytanie. –
A co to jest twoje podstawowe pole kluczowe? czy nawet je masz? –