Pobieranie ostatnich 20 rekordów z tabeli - usuwanie reszty. |
Pobieranie ostatnich 20 rekordów z tabeli - usuwanie reszty. |
27.01.2013, 11:01:57
Post
#1
|
|
Grupa: Zarejestrowani Postów: 91 Pomógł: 4 Dołączył: 14.10.2012 Ostrzeżenie: (0%) |
Jak może wyglądać polecenie, aby usunąć wszystkie rekordy z tabeli oprócz ostatnich 20? (mysql)
Jak ma wyglądać pętla, która będzie wyświetlała te wyniki z separatorem jako ",", ale bez separatora po ostatnim rekordzie? Kod for( $x = 1; $x <= 10; $x++ ) echo $x.","; wyswietla 1,2,3...10, Czy tak jest na ogół dobrze? |
|
|
27.01.2013, 12:03:55
Post
#2
|
|
Grupa: Zarejestrowani Postów: 651 Pomógł: 116 Dołączył: 3.06.2012 Skąd: Lędziny Ostrzeżenie: (0%) |
Czyli najpierw zliczasz ile masz wszystkich rekordów (zmienna $all), licznik bieżący zeroujesz ($count = 0) i potem co wykonanie pętli to zwiększasz $count. Jeśli zmienna $count będzie równa bądź większa od wszystkich rekordów-20 to zaczynasz zapisywać id tych wpisów. Potem tworzysz zapytanie usuwające wszystkie wpisy, prócz tych z zapisanymi w zmiennej po ID. Możesz też jednym zapytaniem: Kod DELETE FROM tablica ORDER BY id DESC LIMIT 20, 9999999; EDIT: Pętlę for() masz dobrze zapisana, a jak pozbyć się ostatniego przecinka z ciągu? Wyżej Ci to pokazałem - funkcja rtrim(). Ten post edytował Michael2318 27.01.2013, 12:29:10 |
|
|
27.01.2013, 14:55:57
Post
#3
|
|
Grupa: Zarejestrowani Postów: 283 Pomógł: 31 Dołączył: 10.01.2006 Skąd: Działoszyn Ostrzeżenie: (0%) |
Mam tylko uwagę do linii 9. - po co za każdym obrotem pętli odejmować 20 od $all ? wystarczyłoby już przy definiowaniu zmiennej dać:
i kod byłby troszkę bardziej optymalny ;) Jednak lepiej zrobić to jednym zapytaniem, jak napisał kolega wyżej, a potem wyświetlić wyniki kolejnym, zamiast bawić się w pętle:
Ten post edytował Michasko 27.01.2013, 15:16:35 -------------------- Po prawie 3-letniej przerwie w programowaniu, znowu raczkuję :) |
|
|
28.01.2013, 10:06:16
Post
#4
|
|
Grupa: Zarejestrowani Postów: 110 Pomógł: 3 Dołączył: 12.03.2011 Skąd: Opole Ostrzeżenie: (0%) |
|
|
|
Wersja Lo-Fi | Aktualny czas: 20.04.2024 - 13:58 |