SQL चयन बहु-स्तंभ बहु-चर में


85

मैं SQL को Teradata से SQL Server में परिवर्तित कर रहा हूँ

Teradata में, उनके पास प्रारूप है

SELECT col1, col2
FROM table1
INTO @variable1, @variable2

SQL सर्वर में, मैंने पाया

SET @variable1 = (
SELECT col1 
FROM table1
);

यह केवल एक कॉलम / वेरिएबल प्रति स्टेटमेंट की अनुमति देता है। एकल चयन कथन का उपयोग करके 2 या अधिक चर कैसे निर्दिष्ट करें?

जवाबों:


168
SELECT @variable1 = col1, @variable2 = col2
FROM table1

क्या यह कई SELECT की तुलना में प्रदर्शन / गति में सुधार करेगा या क्या यह समान है?
शंकर नाथन

8
असली जवाब इसे परखना और अपने लिए देखना है। अनौपचारिक उत्तर हां है, निश्चित रूप से, शायद।
अंडरस्कोर_ड

35
SELECT @var = col1,
       @var2 = col2
FROM   Table

SET / SELECT के बारे में कुछ रोचक जानकारी यहाँ दी गई है

  • SET चर असाइनमेंट के लिए ANSI मानक है, SELECT नहीं है।
  • SET एक समय में केवल एक ही चर असाइन कर सकता है, SELECT एक ही बार में कई कार्य कर सकता है।
  • यदि किसी क्वेरी से असाइन किया जाता है, तो SET केवल एक स्केलर मान प्रदान कर सकता है। यदि क्वेरी कई मान / पंक्तियाँ लौटाती है तो SET एक त्रुटि देगा। चयन चर में से किसी एक मान को असाइन करेगा और इस तथ्य को छिपाएगा कि कई मान लौटाए गए हैं (इसलिए आपको कभी पता नहीं चलेगा कि कहीं और कुछ गलत क्यों हो रहा है - मजेदार समस्या निवारण है)
  • जब किसी क्वेरी से असाइन किया जाता है यदि कोई मान नहीं लौटाया जाता है, तो SET NULL को असाइन करेगा, जहां SELECT असाइनमेंट बिल्कुल नहीं करेगा (इसलिए चर को इसके पिछले मान से नहीं बदला जाएगा)
  • जहाँ तक गति अंतर - SET और SELECT के बीच कोई प्रत्यक्ष अंतर नहीं हैं। हालाँकि, एक शॉट में कई असाइनमेंट करने की SELECT की क्षमता इसे SET पर थोड़ी गति का लाभ देती है।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.