DELETE FROM Highscore ORDER BY value DESC LIMIT 10,5
Den sidste 5
kan være et hvilket som helst tal. Hvis du kører dette hver gang en score tilføjes, kan du have den som 1
. Brug 10
for at tillade mere fejlmargin .
EDIT:Beklager, tilsyneladende kan du ikke bruge en offset her. I så fald:
DELETE FROM Highscore WHERE value < (SELECT value FROM Highscore ORDER BY value DESC LIMIT 10,1)
Hvis det ikke lader dig gøre det (vælg fra samme tabel som en opdatering/sletning), prøv:
SET @tmp = (SELECT value FROM Highscore ORDER BY value DESC LIMIT 10,1)
DELETE FROM Highscore WHERE value < @tmp
EDIT igen:Som påpeget i kommentaren, giver det problemer, hvis 11. værdi er lig med 10. Prøv:
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ørste variabel sikrer, at når der er flere med samme score, vil der ikke være mindre end 10 der.