데이터 처리에서는 복잡한 쿼리에서 테이블을 여러 번 활용하는 기능이 필수적인 경우가 많습니다. 그러나 MySQL에서 임시 테이블을 사용하여 작업할 때 이 기본 작업은 실망스러운 "테이블을 다시 열 수 없습니다" 오류가 발생합니다.
배경
Kris의 설명에 따르면, 임시 테이블에 여러 INNER JOINS가 포함된 복잡한 쿼리로 인해 오류가 발생합니다. 이는 MySQL이 동일한 쿼리 내에서 임시 테이블을 여러 번 여는 것을 허용하지 않기 때문에 발생합니다.
해결 방법
이 제한 사항을 해결하려면 간단하면서도 효과적인 솔루션은 다음과 같습니다. 임시 테이블을 복제하여 본질적으로 두 개의 동일한 버전을 생성합니다. 이는 종종 그렇듯이 임시 테이블이 상대적으로 작을 때 특히 효과적입니다.
구현
다음 단계에서는 이 해결 방법의 구현을 개략적으로 설명합니다.
CREATE TEMPORARY TABLE search (baseID INT, condition TEXT);
INSERT INTO search (baseID, condition) VALUES (1, 'condition1'), (1, 'condition2'), ...;
CREATE TEMPORARY TABLE search_copy AS SELECT * FROM search;
SELECT * FROM search INNER JOIN search_copy f1 ON f1.baseID = search.baseID AND f1.condition = condition1 INNER JOIN search_copy f2 ON f2.baseID = search.baseID AND f2.condition = condition2 ... INNER JOIN search_copy fN ON fN.baseID = search.baseID AND fN.condition = conditionN;
이점
이 해결 방법은 다음과 같은 여러 가지 장점을 제공합니다.
위 내용은 MySQL 임시 테이블의 \'Can\'t Reopen Table\' 오류를 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!