SQL에서 최신 N개 레코드를 제외한 모든 레코드를 삭제하는 방법
이것은 일반적인 문제입니다. 테이블이 레코드로 가득 차 있는데 최신 N개 레코드만 유지하고 나머지는 삭제하려고 합니다. 귀하가 요청한 쿼리는 의도를 보여 주지만 MySQL의 한계로 인해 목적을 달성하지 못합니다.
걱정하지 마세요. 해결책이 있습니다! 다음 쿼리를 사용하면 원하는 결과를 얻을 수 있습니다.
<code class="language-sql">DELETE FROM `table` WHERE id NOT IN ( SELECT id FROM ( SELECT id FROM `table` ORDER BY id DESC LIMIT N -- 保留最新的N条记录 ) foo );</code>
쿼리 분해:
제한 우회:
최적화 지침:
사용 사례에 따라 다음과 같은 최적화된 쿼리가 더 적합할 수도 있습니다.
<code class="language-sql">DELETE FROM `table` ORDER BY id DESC LIMIT ROWS COUNT() - N -- 只保留最新的N条记录</code>
귀하의 요구 사항을 충족하는 경우 성능을 크게 향상시킬 수 있으므로 이 최적화를 고려하십시오.
위 내용은 MySQL에서 N개의 최신 레코드를 제외한 모든 레코드를 어떻게 삭제할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!