>  기사  >  데이터 베이스  >  하위 쿼리를 사용하여 MySQL의 특정 기준에 따라 레코드를 삭제하는 방법은 무엇입니까?

하위 쿼리를 사용하여 MySQL의 특정 기준에 따라 레코드를 삭제하는 방법은 무엇입니까?

DDD
DDD원래의
2024-11-09 22:08:02538검색

How to Delete Records Based on a Specific Criteria in MySQL using Subqueries?

MySQL에서 데이터 조작을 위한 하위 쿼리 사용

현재 작업에는 특정 기준에 따라 테이블에서 레코드를 선택적으로 삭제하는 작업이 포함됩니다. 하위 쿼리를 활용하면 MySQL을 사용하여 이 작업을 수행할 수 있습니다.

시작하려면 다음 쿼리를 고려해 보겠습니다.

DELETE FROM posts WHERE id NOT IN
(SELECT id FROM posts ORDER BY timestamp DESC LIMIT 0, 15)

이 쿼리는 최신 15개 레코드에 포함되지 않은 게시물을 삭제하는 것을 목표로 합니다. "타임스탬프" 필드에 따라 정렬됩니다. 그러나 8.0 이전 버전의 MySQL에서는 LIMIT 절을 IN 하위 쿼리와 결합하려고 하면 오류가 발생합니다.

이 제한을 극복하기 위해 중첩 하위 쿼리 해결 방법을 사용할 수 있습니다. 수정된 쿼리는 다음과 같습니다.

DELETE 
FROM posts 
WHERE id NOT IN (
      SELECT * FROM (
            SELECT id 
            FROM posts 
            ORDER BY timestamp DESC LIMIT 0, 15
      ) 
      AS t);

이 다시 작성된 쿼리에서는 최신 15개 게시물의 ID를 가져오는 내부 하위 쿼리를 생성합니다. 그런 다음 외부 하위 쿼리는 "AS t" 절을 사용하여 결과에 별칭을 지정합니다.

이 중첩 하위 쿼리 접근 방식을 사용하면 LIMIT 및 IN 조합을 완전히 지원하지 않는 이전 MySQL 버전에서도 원하는 결과를 효과적으로 얻을 수 있습니다. .

위 내용은 하위 쿼리를 사용하여 MySQL의 특정 기준에 따라 레코드를 삭제하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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