DELETE FROM Highscore ORDER BY value DESC LIMIT 10,5
Die laatste 5
kan elk nummer zijn. Als je dit telkens uitvoert wanneer een score wordt toegevoegd, kun je deze als 1
. hebben . Gebruik 10
. om meer foutenmarge toe te staan .
EDIT:Sorry, blijkbaar kun je hier geen offset gebruiken. In dat geval:
DELETE FROM Highscore WHERE value < (SELECT value FROM Highscore ORDER BY value DESC LIMIT 10,1)
Als u dat niet kunt doen (selecteer uit dezelfde tabel als bijwerken/verwijderen), probeer dan:
SET @tmp = (SELECT value FROM Highscore ORDER BY value DESC LIMIT 10,1)
DELETE FROM Highscore WHERE value < @tmp
EDIT opnieuw:zoals opgemerkt in commentaar, veroorzaakt problemen als de 11e waarde gelijk is aan de 10e. Probeer:
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
Sorteren op scoreId in de eerste variabele zorgt ervoor dat als er meerdere met dezelfde score zijn, er niet minder dan 10 overblijven.