M M@rtin Medlem sedan dec. 1999 2 085 inlägg Frågan 20 juni 2006 14:24 #1 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 M@rtin Medlem sedan dec. 1999 2 085 inlägg finns verkligen TOP i mysql?
Brimba Medlem sedan dec. 1999 5 874 inlägg DELETE FROM Foo
WHERE Id NOT IN (
SELECT Id FROM Foo ORDER BY Id DESC LIMIT 0, 100
)
M M@rtin Medlem sedan dec. 1999 2 085 inlägg Man kan inte köra LIMIT i subquerys, inte i min mysql version iaf. :(
K K@llen Medlem sedan mars 2003 2 667 inlägg Vilken version använder du?
M M@rtin Medlem sedan dec. 1999 2 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 K@llen Medlem sedan mars 2003 2 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 M@rtin Medlem sedan dec. 1999 2 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?