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
편집 다시 : 코멘트에 지적한 바와 같이 11 번째 값이 10 번째 일 경우 문제가 발생합니다. 시도 : 첫 번째 변수에 scoreId에 의해
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
주문이 보장이 거기에 남아있을 것입니다 (10) 못지 않게 같은 점수, 여러있을 때.
mhnm해야 작품 :) 아주 까다로운, 탱크 –