在資料處理中,在複雜查詢中多次使用表的能力通常至關重要。然而,在 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 臨時表中的「無法重新開啟表」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!