집 >데이터 베이스 >MySQL 튜토리얼 >하위 쿼리를 사용하여 MySQL의 특정 기준에 따라 레코드를 삭제하는 방법은 무엇입니까?
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!