DELETE FROM Highscore ORDER BY value DESC LIMIT 10,5
。スコアを追加するたびにこれを実行すると、1
とすることができます。エラーのマージンを増やすには、10
を使用します。
編集:申し訳ありませんが、ここではオフセットを使用できません。その場合:
DELETE FROM Highscore WHERE value < (SELECT value FROM Highscore ORDER BY value DESC LIMIT 10,1)
が、それはあなたが(/更新として同じテーブルから選択削除)することをやらせていない場合は、試してみてください。
SET @tmp = (SELECT value FROM Highscore ORDER BY value DESC LIMIT 10,1)
DELETE FROM Highscore WHERE value < @tmp
EDIT再び:コメントで指摘したように11番目の値が10の場合に問題が発生します。試してみてください:
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
注文scoreIdで最初の変数には同じスコアを持ついくつかがある場合には、何も10未満が残されないことを保証します。
mhnmは仕事でなければなりません:)非常にトリッキーな、タンク –