DELETE FROM Highscore ORDER BY value DESC LIMIT 10,5
Posledních 5
může být libovolné číslo. Pokud toto spustíte při každém přidání skóre, můžete to mít jako 1
. Chcete-li zajistit větší chybovost, použijte 10
.
EDIT:Promiňte, zřejmě zde nemůžete použít offset. V tom případě:
DELETE FROM Highscore WHERE value < (SELECT value FROM Highscore ORDER BY value DESC LIMIT 10,1)
Pokud vám to nedovolí (vyberte ze stejné tabulky jako aktualizace/smazání), zkuste:
SET @tmp = (SELECT value FROM Highscore ORDER BY value DESC LIMIT 10,1)
DELETE FROM Highscore WHERE value < @tmp
UPRAVTE znovu:Jak bylo uvedeno v komentáři, způsobuje problémy, pokud je 11. hodnota rovna 10. Zkuste:
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
Seřazení podle scoreId v první proměnné zajistí, že když jich bude několik se stejným skóre, nezbude tam méně než 10.