SQL delete+limit howto

Ahoj robim si jednu vecicku s pomocou MySQL+PHP
ako by som mohol v databaze udrziavat iba 25 zaznamov?
ja som navrhol toto ale nefunguje to :)

mysql_query("DELETE FROM `tabaulka` LIMIT 26,27");

potrebujem jednoducho nechat v DB len 25 zaznamov bez pomoci where
dakujem za answ
Tak to jsem na řešení bez WHERE zvědavý.
Kterych 25 zaznamu? Pokud chces jen 25 NEJNOVEJSICH zaznamu, tak princip je nasledujici.

Nejdriv musis zjistit celkovy pocet zaznamu. =$celkem
Pak aplikujes dotaz:

DELETE FROM `tabulka`ORDER BY radic DESC LIMIT 25,$celkem-25

kde 'radic' je sloupec, ktery urcuje stari zaznamu (id,datum,..)
proste ORDER BY seradis od nejnovejsi po nejstarsi a LIMITEM reknes, ze chces smazat vse od 26. radku po konec. Tim padem ti zustane jen prvnich 25 zaznamu.
Mato (sk3l3t0n.xf.cz)
Jestli se jedna o chat tak to, co chces je naprostej nesmysl.
1000 zaznamu je nic pro chat. Takze tobe staci provest pokazde SELECT a zjistit, zda je pocet pres 2000 a pokud ano, 1000 poslednich smazat. Jinymi slovy
SELECT COUNT(*) FROM `tabulka` -> pocet -> if pocet>2000
DELETE FROM `tabulka` ORDER BY datum ASC LIMIT 1000
(serazeni podle datumu opacne, cili 1000 zaznamu od konce)

Autor: zbi (knizky.unas.cz) Datum: 05. 05. 2007 12:32
"Tak to jsem na řešení bez WHERE zvědavý."

s tim where teda nevim, jestli to takto jde, si myslim, ze ano, protoze to pouzivam :)
http://www.volny.cz/peter.mlich/programs/minichat.txt
$dotaz = "DELETE FROM $tab ORDER BY `date` ASC LIMIT $roomdel";
dikes za rady vyriesil so mto ako keby tym last sposobom len som nastavil na 100 :)
dikes moc

a este sa tu otvara nova otazke hey,
v db mam id auto increment no ked is uvedomim ze po roku to bude incrementovanedo 10000 a nebudu tam setky 10000 ale len poslednych 100.. tkaako mam teda vyriesit id aby sa sice auto incrementovalo len ze ked bude napriklad 50,51,52,53...60 tak ako mam nastavit aby bolo prve od znovu od 1?
dufam ze ma chapete.

jednoducho vlozim do db 30 zaznamv poslednych 20 vymazem zostane mi tma id 21,22,23...30 a ako mam zmenit to cislo 21 na 1. (podrobnejsie vysvetlenie)


dikes za answ :)
tak, je moznost vynulovat autoincrement, tusim, ale to by te nemuselo znervoznovat... Otazka je, k cemu to ID pouzivas.

Je treba moznost vyhodit AUTOINCREMENT a prepisovat stale tech 100 polozek podle ID.
Cili das SELECT ... WHERE datum = posledni -> id
UPDATE ... datum=new data=new WHERE id=...
A tim je problem vyreseny.

Pak mas moznost udelat si alternativni tabulku. Pretahnout data do ni, pak das DROP puvodni, CREATE puvodni, pretahnes data a opet to zacina 1.
ALE. Kdyz ted mas na strance nejake dalsi odkazy, ktere si do SQL ukladaji ID teto tabulky, tak se stavaji neplatnymi. Takze si je musis precislovat.

Nebo lze tusim INSERTOVAT na i s ID.

Ale protoze jsem nikdy nic takove nepotreboval, necham rady na ostatnich. Ja bych pouzil to prepisovani radku. Ale jsou to 2 SQL dotazy, coz muze byt nezadouci.
peta:
moznost vynulovat autoincrement""
jj, je tato možnost, ale úplně k ničemu, protože ti db potom vrátí chybu o zdvojených indexech (snad proto, že autoinc musí být JEDINEČNÝ)

Jinak; tohle by se dalo mnohem řešit:
a)
 1) zjisti počet záznamů [n];
 2) umazat prvních n-25 záznamů
 (+) celkem nenáročné na programátora
 (-) neefektivní (vždy o 2 dotazy navíc), nelze provozovat do nekonečna (hodnoty int, bigint jsou sice velké, ale nejsou nekonečné)

b)
 I) pokud mám <25 záznamů, budu spokojeně přidávat pomocí INSERT INTO ... a přičítat si někam mimo počet záznamů.
 II) pokud mám >= 25 záznamům, budu si místo počtu záznamů ukládat naposledy přepsané ID [x] a x+1 budu přepisovat pomocí UPDATE ...
 (+) neotravuju db neustálými dotazy na počet řádků a umazáváním starých, bez problémů opakovatelné dle libosti, relativně spolehlivější
 (-) náročnější na programátora