Dans le traitement des données, la possibilité d'utiliser une table plusieurs fois dans une requête complexe est souvent essentielle. Cependant, lorsque vous travaillez avec des tables temporaires dans MySQL, cette opération apparemment basique rencontre l'erreur frustrante "Impossible de rouvrir la table".
Contexte
Comme décrit par Kris, une requête complexe impliquant plusieurs INNER JOINS sur une table temporaire entraîne l'erreur. Cela se produit car MySQL n'autorise pas l'ouverture de tables temporaires plusieurs fois dans la même requête.
Solution de contournement
Pour contourner cette limitation, une solution simple mais efficace consiste à dupliquez la table temporaire, créant essentiellement deux versions identiques. Cela fonctionne particulièrement bien lorsque la table temporaire est relativement petite, comme c'est souvent le cas.
Mise en œuvre
Les étapes suivantes décrivent la mise en œuvre de cette solution de contournement :
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;
Avantages
Cette solution de contournement offre plusieurs avantages :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!