webForumDet fria alternativet

Radera alla utom 100 senaste

8 svar · 454 visningar · startad av M@rtin

M@rtinMedlem sedan dec. 19992 085 inlägg
#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.

Erik JuhlinMedlem sedan maj 200010 687 inlägg
#2
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
#3

finns verkligen TOP i mysql?

BrimbaMedlem sedan dec. 19995 875 inlägg
#4
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
#5

Man kan inte köra LIMIT i subquerys, inte i min mysql version iaf. :(

K@llenMedlem sedan mars 20032 667 inlägg
#6

Vilken version använder du?

M@rtinMedlem sedan dec. 19992 085 inlägg
#7

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
#8

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
#9

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?

131 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)