>  기사  >  데이터 베이스  >  'LIMIT & IN' 하위 쿼리 지원 없이 MySQL에서 최신 15개 게시물을 제외한 모든 게시물을 삭제하는 방법은 무엇입니까?

'LIMIT & IN' 하위 쿼리 지원 없이 MySQL에서 최신 15개 게시물을 제외한 모든 게시물을 삭제하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-11 15:44:03196검색

How to Delete All Posts Except the Latest 15 in MySQL Without 'LIMIT & IN' Subquery Support?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.