如何解決 MySQL 臨時表中的「無法重新開啟表」錯誤?

Susan Sarandon
發布: 2024-11-19 03:05:03
原創
178 人瀏覽過

How to Workaround the

解決 MySQL 中的「無法重新開啟表」錯誤

在資料處理中,在複雜查詢中多次使用表的能力通常至關重要。然而,在 MySQL 中使用臨時表時,這個看似基本的操作遇到了令人沮喪的「無法重新開啟表格」錯誤。

背景

如 Kris 所描述的,涉及臨時表上的多個 INNER JOINS 的複雜查詢會導致錯誤。發生這種情況是因為 MySQL 不允許在相同查詢中多次開啟臨時表。

解決方法

要克服此限制,一個簡單而有效的解決方案是複製臨時表,本質上創建兩個相同的版本。當臨時表相對較小時(通常是這種情況),此方法特別有效。

實作

以下步驟概述了此解決方法的實作:

  1. 建立臨時表:
CREATE TEMPORARY TABLE search (baseID INT, condition TEXT);
登入後複製
  1. 用資料填滿臨時表:
INSERT INTO search (baseID, condition) VALUES (1, 'condition1'), (1, 'condition2'), ...;
登入後複製
  1. 現在,複製臨時表:
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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板