संपादित करें: मैं मूल स्वीकार किए गए उत्तर को छोड़ रहा हूं जैसा कि यह है, लेकिन कृपया ध्यान दें कि नीचे संपादित करें, जैसा कि a_horse_with_no_name द्वारा सुझाया गया है, VALUES का उपयोग करके एक अस्थायी तालिका बनाने के लिए पसंदीदा तरीका है।
यदि आप केवल कुछ मानों का चयन करना चाहते हैं, तो केवल एक तालिका बनाने और उसमें सम्मिलित होने के बजाय, आप कुछ ऐसा कर सकते हैं:
WITH vals (k,v) AS (VALUES (0,-9999), (1, 100))
SELECT * FROM vals;
वास्तव में एक समान फैशन में एक अस्थायी तालिका बनाने के लिए, उपयोग करें:
WITH vals (k,v) AS (VALUES (0,-9999), (1, 100))
SELECT * INTO temporary table temp_table FROM vals;
EDIT: जैसा कि डॉक्स में a_horse_with_no_name द्वारा इंगित किया गया है, यह बताता है कि CREATE TABLE AS...
कार्यात्मक रूप से समान है SELECT INTO ...
, लेकिन यह कि पूर्व उत्तरार्द्ध का एक सुपरसेट है और SELECT INTO
इसका उपयोग अस्थायी चर के मान को असाइन करने के लिए plpgslq में किया जाता है - इसलिए यह इसमें विफल होगा। उस मामले में। इसलिए, जबकि उपरोक्त उदाहरण सादे एसक्यूएल के लिए मान्य हैं, CREATE TABLE
प्रपत्र को प्राथमिकता दी जानी चाहिए।
CREATE TEMP TABLE temp_table AS
WITH t (k, v) AS (
VALUES
(0::int,-99999::numeric),
(1::int,100::numeric)
)
SELECT * FROM t;
नोट, a_horse_with_no_name द्वारा टिप्पणियों से भी, और ओपी के मूल प्रश्न में, इसमें मान सूची के अंदर सही डेटाटाइप्स में एक कास्ट शामिल है और एक सीटीई (विथ) स्टेटमेंट का उपयोग करता है।
इसके अलावा, जैसा कि इवान काररोल के जवाब में कहा गया है, एक सीटीई क्वेरी एक अनुकूलन बाड़ है , यानी, सीटीई हमेशा भौतिक होता है। CTEs का उपयोग करने के कई अच्छे कारण हैं, लेकिन ध्यान से उपयोग न किए जाने पर काफी महत्वपूर्ण प्रदर्शन हो सकता है। हालांकि, ऐसे कई उदाहरण हैं, जहां अनुकूलन बाड़ वास्तव में प्रदर्शन को बढ़ा सकते हैं, इसलिए यह आँख बंद करके बचने के लिए नहीं बल्कि जागरूक होने के लिए कुछ है।