>데이터 베이스 >MySQL 튜토리얼 >NOT IN 하위 쿼리에서 LIMIT를 사용할 때 MySQL이 실패하는 이유는 무엇입니까?

NOT IN 하위 쿼리에서 LIMIT를 사용할 때 MySQL이 실패하는 이유는 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-16 00:54:03874검색

Why Does MySQL Fail When Using LIMIT in NOT IN Subqueries?

NOT IN 하위 쿼리의 LIMIT: MySQL 제한 사항

MySQL로 작업할 때 LIMIT 절 내에서 하위 쿼리를 사용할 때 제한이 발생할 수 있습니다. 특정 범위에 포함되지 않은 레코드를 삭제하려고 할 때 한 가지 일반적인 문제가 발생합니다.

최신 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);

이 수정된 쿼리에서 최신 15개 게시물을 선택하는 하위 쿼리는 별칭 "t"가 할당되고 외부 하위 쿼리는 별칭을 사용하여 제외된 ID를 검색합니다. 결과는 원하는 삭제를 달성해야 하는 유효한 쿼리입니다.

위 내용은 NOT IN 하위 쿼리에서 LIMIT를 사용할 때 MySQL이 실패하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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