MySQL 하위 쿼리 제한: 최신 15개를 제외한 게시물 삭제
데이터베이스 최적화 영역에서는 중복되거나 오래된 데이터를 제거해야 하는 경우가 많습니다. 이 질문은 MySQL 하위 쿼리를 사용하여 최신 15개 게시물을 제외한 모든 게시물을 삭제하는 방법을 탐구합니다.
원래 쿼리:
DELETE FROM posts WHERE id NOT IN (SELECT id FROM posts ORDER BY timestamp DESC LIMIT 0, 15)
그러나 이 쿼리는 MySQL의 지원 부족으로 인해 오류가 발생합니다. 이전 버전에서는 'LIMIT & IN/ALL/ANY/SOME' 하위 쿼리를 사용했습니다. 이 문제를 해결하기 위해 수정된 쿼리를 사용할 수 있습니다.
DELETE FROM posts WHERE id NOT IN ( SELECT * FROM ( SELECT id FROM posts ORDER BY timestamp DESC LIMIT 0, 15 ) AS t);
이 수정된 쿼리에서는 별칭 't'를 사용하여 파생 테이블로 추가 하위 쿼리가 도입되었습니다. 이 파생 테이블에는 최신 15개 게시물의 ID가 포함되어 있으며 타임스탬프를 기준으로 내림차순으로 정렬되어 있습니다. 그런 다음 기본 쿼리는 이 파생 테이블을 활용하여 게시물을 삭제할 때 해당 특정 ID를 제외합니다.
이 해결 방법을 사용하면 게시물을 삭제하지 않는 MySQL 버전의 최신 15개 게시물을 제외한 모든 게시물을 삭제하는 원하는 결과를 얻을 수 있습니다. 'LIMIT & IN/ALL/ANY/SOME' 하위 쿼리를 지원하지 않습니다. 이 개정된 접근 방식은 더 이상 참조할 수 있도록 최신 게시물을 보존하면서 쓸모 없는 게시물을 효과적으로 제거합니다.
위 내용은 'LIMIT & IN' 하위 쿼리 지원 없이 MySQL에서 최신 15개 게시물을 제외한 모든 게시물을 삭제하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!