Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

मौजूद 1 या मौजूद का उपयोग करने वाली उपश्रेणी *

नहीं, SQL सर्वर स्मार्ट है और जानता है कि इसका उपयोग EXISTS के लिए किया जा रहा है, और सिस्टम को कोई डेटा नहीं देता है।

क्वॉथ माइक्रोसॉफ्ट:http://technet.microsoft.com/en-us/library/ms189259.aspx?ppud=4

<ब्लॉककोट>

EXISTS द्वारा प्रस्तुत उपश्रेणी की चयन सूची में लगभग हमेशा एक तारक (*) होता है। कॉलम नामों को सूचीबद्ध करने का कोई कारण नहीं है क्योंकि आप सिर्फ परीक्षण कर रहे हैं कि क्या उपक्वेरी में निर्दिष्ट शर्तों को पूरा करने वाली पंक्तियां मौजूद हैं।

अपने आप को जांचने के लिए, निम्नलिखित को चलाने का प्रयास करें:

SELECT whatever
  FROM yourtable
 WHERE EXISTS( SELECT 1/0
                 FROM someothertable 
                WHERE a_valid_clause )

अगर यह वास्तव में चयन सूची के साथ कुछ कर रहा था, तो यह शून्य त्रुटि से एक div फेंक देगा। ऐसा नहीं है।

संपादित करें:ध्यान दें, SQL मानक वास्तव में इस बारे में बात करता है।

एएनएसआई एसक्यूएल 1992 मानक, पृष्ठ 191 http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt

<ब्लॉककोट>

3) केस:
a) यदि <select list> "*" बस एक <subquery> . में समाहित है यह तुरंत एक <exists predicate> . में समाहित है , फिर <select list> <value expression> के बराबर है यह एक मनमाना <literal> है ।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL में न्यूनतम दो मान प्राप्त करना

  2. SQL सर्वर - लेन-देन त्रुटि पर वापस रोल?

  3. टी-एसक्यूएल:ईमेल प्रारूप की जांच

  4. स्पॉटलाइट क्लाउड बेसिक:बेस्ट फ्री डेटाबेस परफॉर्मेंस मॉनिटरिंग टूल

  5. मैं अपने SQL सर्वर एजेंट जॉब में एक चरण कैसे बनाऊं जो मेरा SSIS पैकेज चलाएगा?