2013-08-29 1 views
1

타임 스탬프를 기준으로 최근 25 개의 항목을 제외한 모든 항목을 삭제하려고합니다. 나는이 시도 :이 작업을 수행 할 수있는 방법이 있나요MySQL 선택하지 않은 모든 레코드 삭제

#1235 - This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery' 

:이 오류가 발생합니다

DELETE FROM `chat` WHERE `IndexNo` NOT IN(SELECT `IndexNo` FROM `chat` ORDER BY `Timestamp` DESC LIMIT 25) 

?를

+0

실행중인 MySQL 버전은 무엇입니까? –

+0

내가보기 엔 너무 외롭지 만 않으면, 그들이 사용하는 버전이 정말로 중요하지 않을 수 있습니다. – Strawberry

답변

1

당신은 LIMITIN/ALL/ANY/SOME에서 서브 쿼리에 의존 할 수는 없지만 대신에 사용할 수있는 멀티 - 삭제 구문 :

DELETE 
    `chat` 
FROM 
    `chat` 
    LEFT JOIN (SELECT `IndexNo` FROM `chat` ORDER BY `Timestamp` DESC LIMIT 25) AS `selected` 
     ON `chat`.`IndexNo`=`selected`.`IndexNo` 
WHERE 
    `selected`.`IndexNo` IS NULL; 

-according manual에, 이것은 5.0 이후 작동합니다