DELETE FROM Highscore ORDER BY value DESC LIMIT 10,5
Den sista 5
kan vara vilket nummer som helst. Om du kör detta varje gång en poäng läggs till kan du ha den som 1
. För att tillåta större felmarginal, använd 10
.
EDIT:Förlåt, tydligen kan du inte använda en offset här. I så fall:
DELETE FROM Highscore WHERE value < (SELECT value FROM Highscore ORDER BY value DESC LIMIT 10,1)
Om det inte låter dig göra det (välj från samma tabell som en uppdatering/ta bort), försök:
SET @tmp = (SELECT value FROM Highscore ORDER BY value DESC LIMIT 10,1)
DELETE FROM Highscore WHERE value < @tmp
EDIT igen:Som påpekats i kommentaren, orsakar problem om 11:e värdet är lika med 10:e. Försök:
SET @id = (SELECT scoreId FROM Highscore ORDER BY value DESC, scoreId DESC LIMIT 10,1), @val = (SELECT value FROM Highscore ORDER BY value DESC LIMIT 10,1)
DELETE FROM Highscore WHERE value <= @val AND scoreId < @id
Ordning efter scoreId i den första variabeln säkerställer att när det finns flera med samma poäng kommer inte mindre än 10 att lämnas där.