Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL] obciecie wpisow powyzej 30 co do czasu powstania
Forum PHP.pl > Forum > Przedszkole
hhg
mam tabele w MySQL z logami, i chcę żeby wpisy nie mieszczace sie w ostatnich 30 co do wprowadzenia byly usuwane

niestety w niektorych wersjach MySQL zapytanie:

  1. DELETE FROM logs WHERE id NOT IN (SELECT id FROM logs WHERE end_date IS NULL ORDER BY begin_date LIMIT 0, 30)

nie działa bo 'zabrania sie stosowania LIMIT w subquery..

czy da sie to jakos obejsc?

struktura bazy to:
  1. CREATE TABLE `logs` (
  2. `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `sid` varchar(32) NOT NULL,
  4. `ip` varchar(15) NOT NULL,
  5. `host` varchar(100) NOT NULL,
  6. `begin_date` datetime NOT NULL,
  7. `end_date` datetime DEFAULT NULL,
  8. PRIMARY KEY (`id`)
  9. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=10 ;
phpion
Wydaje mi sie, że wystarczy coś takiego:
  1. DELETE FROM logs ORDER BY begin_date ASC LIMIT 30 ;
hhg
i to nie obetnie czasem najnowszych 30?

wiem ze moge przetestowac ale nie mam na czym to nie moge sobie pozwolic na wywalenie tych wpisow
drPayton
Zrobiłem to za Ciebie - działa jak należy.

Edit: Najnowsze 30 wywaliłoby, gdybyś wstawił tam DESC zamiast ASC
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.