Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menyelesaikan Ralat \'Tidak Dapat Membuka Semula Jadual\' dalam Jadual Sementara MySQL?
Dalam pemprosesan data, keupayaan untuk menggunakan jadual beberapa kali dalam pertanyaan yang kompleks selalunya penting. Walau bagaimanapun, apabila bekerja dengan jadual sementara dalam MySQL, operasi yang kelihatan asas ini menghadapi ralat "Tidak dapat membuka semula jadual" yang mengecewakan.
Latar Belakang
Seperti yang diterangkan oleh Kris, pertanyaan kompleks yang melibatkan berbilang INNER JOINS pada jadual sementara mengakibatkan ralat. Ini berlaku kerana MySQL tidak membenarkan jadual sementara dibuka beberapa kali dalam pertanyaan yang sama.
Penyelesaian
Untuk menavigasi had ini, penyelesaian yang mudah namun berkesan adalah dengan pendua jadual sementara, pada asasnya mencipta dua versi yang sama. Ini berfungsi terutamanya apabila jadual sementara agak kecil, seperti yang sering berlaku.
Pelaksanaan
Langkah berikut menggariskan pelaksanaan penyelesaian ini:
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;
Faedah
Penyelesaian ini menawarkan beberapa kelebihan:
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat \'Tidak Dapat Membuka Semula Jadual\' dalam Jadual Sementara MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!