एक अलग तालिका बनाने के बिना एक चयन कथन में एक अस्थायी तालिका बनाएं


494

क्या यह एक सारणी बनाने वाले कथन का उपयोग किए बिना और प्रत्येक स्तंभ प्रकार को निर्दिष्ट किए बिना एक चयनित कथन से एक अस्थायी (केवल सत्र) तालिका बनाना संभव है? मुझे पता है कि व्युत्पन्न टेबल इसके लिए सक्षम हैं, लेकिन वे सुपर-अस्थायी (केवल कथन) हैं और मैं फिर से उपयोग करना चाहता हूं।

यह समय की बचत करेगा यदि मुझे एक सृजन तालिका कमांड नहीं लिखना है और कॉलम सूची और प्रकार सूची को मिलान करके रखना है।

जवाबों:


789
CREATE TEMPORARY TABLE IF NOT EXISTS table2 AS (SELECT * FROM table1)

Http://dev.mysql.com/doc/refman/5.7/en/create-table.html पर मिले मैनुअल से

तालिका बनाते समय आप TEMPORARY कीवर्ड का उपयोग कर सकते हैं। एक अस्थायी तालिका केवल वर्तमान सत्र के लिए दिखाई देती है , और सत्र बंद होने पर स्वचालित रूप से हटा दिया जाता है। इसका मतलब है कि दो अलग-अलग सत्र एक ही अस्थायी तालिका नाम का उपयोग एक दूसरे के साथ या एक ही नाम के गैर-अस्थायी तालिका के साथ परस्पर विरोधी के बिना कर सकते हैं। (मौजूदा तालिका को तब तक छिपाया जाता है जब तक कि अस्थायी तालिका को गिरा नहीं दिया जाता है।) अस्थायी तालिकाएँ बनाने के लिए, आपके पास रचनात्मक तांत्रिक विशेषाधिकार होना चाहिए।


8
उत्तम! इष्टतम अधिकतम और सभी के साथ कॉलम! मैं शब्द जोड़ा temporaryतो create temporary table mytable as select ...
ब्रायन फील्ड

5
@ imperium2335, शायद आपको निम्नलिखित प्रयास करना चाहिए create table t as select ... limit 0; alter table t engine=memory; insert into t select ...:। या, शायद आप "नई तालिकाओं के डिफ़ॉल्ट इंजन" को बदल सकते हैं। मुझे लगता है कि यह एक सत्र स्तर चर में किया जा सकता है। बेहतर अभी तक, ऊपरी-दाएं पर प्रश्न पूछें बटन का उपयोग करें।
ब्रायन फील्ड

10
स्तंभ नाम और प्रकारों के बारे में जानने की आवश्यकता नहीं है, जो कि प्रश्न तालिका बनाने से बचने के लिए प्रश्नकर्ता का कारण था।
Psparrow

30
आप इसे इस तरह उपयोग कर सकते हैं CREATE TEMPORARY TABLE IF NOT EXISTS table2 LIKE table1यदि आप डेटा की प्रतिलिपि नहीं बनाना चाहते हैं, तो बस संरचना
एरिज़ोना

1
सत्र का क्या मतलब है?
सौरभ चंद्र पटेल

137

यदि आपको अपनी अस्थायी तालिका में कोई अनुक्रमणिका जोड़ने की आवश्यकता है, तो Psparrow के उत्तर के अलावा :

CREATE TEMPORARY TABLE IF NOT EXISTS 
  temp_table ( INDEX(col_2) ) 
ENGINE=MyISAM 
AS (
  SELECT col_1, coll_2, coll_3
  FROM mytable
)

यह भी साथ काम करता है PRIMARY KEY


3
क्या इंजन = मेमोरी का उपयोग इस तरह के वाक्य रचना के साथ भी किया जा सकता है?
डार्कसाइड

6
@DarkSide Yes Engine = MEMORY का भी उपयोग किया जा सकता है। निम्न उदाहरण देखें: blog.cnizz.com/2010/11/24/…
राफाशीष

1
MyISAM और मेमोरी इंजन में क्या अंतर है? स्मृति के लाभ क्या हैं?
योहमान


54

इंजन का चयन करने से पहले होना चाहिए:

CREATE TEMPORARY TABLE temp1 ENGINE=MEMORY 
as (select * from table1)

39

ENGINE=MEMORYसमर्थित नहीं है, जब तालिका में BLOB/ TEXTकॉलम होते हैं


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.