M@rtinMedlem sedan dec. 19992 085 inlägg Jag har en logg-tabell i en mysql databas och jag skulle vilja kunna ta bort allt utom de senaste 100 tuplerna i den (högst id = senast).
Går detta att göra på något snyggt sätt?
Man kan ju alltid lägga in 100 saker och sedan göra så att varje gång man lägger till något tas det bort en med det känns inte riktigt bra.
DELETE FROM Foo
WHERE Id NOT IN (
SELECT TOP 100 Id FROM Foo ORDER BY Id DESC
)
M@rtinMedlem sedan dec. 19992 085 inlägg finns verkligen TOP i mysql?
BrimbaMedlem sedan dec. 19995 875 inlägg DELETE FROM Foo
WHERE Id NOT IN (
SELECT Id FROM Foo ORDER BY Id DESC LIMIT 0, 100
)
M@rtinMedlem sedan dec. 19992 085 inlägg Man kan inte köra LIMIT i subquerys, inte i min mysql version iaf. :(
K@llenMedlem sedan mars 20032 667 inlägg Vilken version använder du?
M@rtinMedlem sedan dec. 19992 085 inlägg 5.0 fast mitt webhotell kör 4.1 tror jag och det är främst det som har betydelse. Det funkar inte i 5.0 iaf så det funkar nog inte i 4.1 heller.
K@llenMedlem sedan mars 20032 667 inlägg Nä, det fungerar inte i 4.1 och framåt om jag har rätt för mig.
Se denna tråd:
http://www.webforum.nu/showthread.php?t=138149
och framför allt detta svar:
http://www.webforum.nu/showthread.php?p=1148073#post1148073
M@rtinMedlem sedan dec. 19992 085 inlägg Ja okej, kanske är enda möjligheten.
Det går inte att typ räkna antalet tupler och radera med en LIMIT antal-100 eller nåt i den stilen?