mysql - तालिका से चयन 1 का क्या मतलब है?




plsql (10)

अगर आपका मतलब कुछ है

SELECT * FROM AnotherTable
  WHERE EXISTS (SELECT 1 FROM table WHERE...) 

तो यह एक मिथक है कि 1 से बेहतर है

SELECT * FROM AnotherTable
  WHERE EXISTS (SELECT * FROM table WHERE...) 

EXISTS में 1 या * को अनदेखा किया जाता है और आप इसे एएनएसआई एसक्यूएल 1992 मानक के अनुसार लिख सकते हैं:

SELECT * FROM AnotherTable
  WHERE EXISTS (SELECT 1/0 FROM table WHERE...) 

मैंने इस तरह के कुछ के साथ कई सवाल देखा है ..

Select 1  
From table

यह 1 का क्या अर्थ है और इसे कैसे निष्पादित किया जाएगा और यह क्या वापस आएगा? कृपया मुझे यह भी मार्गदर्शन करें कि किस प्रकार के मामलों का उपयोग किया जा सकता है ???

अग्रिम में धन्यवाद


इसका मतलब यह है कि आप तालिका से पहले कॉलम को पुनर्प्राप्त कर रहे हैं ,, का मतलब है Emply_num, Empl_no कर्मचारियों से; यहां आप कर्मचारियों से चयन 1 का उपयोग कर रहे हैं; इसका मतलब है कि आप Emply_num कॉलम को पुनर्प्राप्त कर रहे हैं। धन्यवाद


कारण कम से कम MySQL के लिए एक और कारण है। यह MySQL मैनुअल से है

InnoDB तालिका में ऐसे मानों को संग्रहीत करने के बजाय स्टार्टअप के बाद तालिका को पहली बार एक्सेस करने के लिए इंडेक्स कार्डिनिटीिटी मानों की गणना करता है। यह चरण सिस्टम पर महत्वपूर्ण समय ले सकता है जो डेटा को कई तालिकाओं में विभाजित करता है। चूंकि यह ओवरहेड प्रारंभिक तालिका ओपन ऑपरेशन पर लागू होता है, बाद में उपयोग के लिए तालिका को "गर्म" करने के लिए, इसे एक कथन जारी करके स्टार्टअप के तुरंत बाद इसे एक्सेस करें जैसे कि TLECT_name LIMIT 1 से SELECT 1


तालिका में प्रत्येक रिकॉर्ड के लिए परिणाम 1


मुझे लगता है कि यह हमेशा एसक्यूएल इंजेक्शन में प्रयोग किया जाता है, जैसे कि:

www.urlxxxxx.com/xxxx.asp?id=99 union select 1,2,3,4,5,6,7,8,9 from database;

इन नंबरों का अनुमान लगाने के लिए उपयोग किया जा सकता है कि डेटाबेस कहां मौजूद है और आपके द्वारा निर्दिष्ट डेटाबेस के कॉलम नाम का अनुमान लगाएं। और तालिकाओं के मान।


यदि आप WHERE क्लॉज के आधार पर सही या गलत जांचना चाहते हैं, तो तालिका से 1 चुनें जहां स्थिति सबसे सस्ता तरीका है।


यद्यपि यह व्यापक रूप से ज्ञात नहीं है, लेकिन एक क्वेरी में GROUP BY क्लॉज के बिना एक HAVING क्लॉज हो सकता है।

ऐसी परिस्थितियों में, HAVING क्लॉज पूरे सेट पर लागू होता है। स्पष्ट रूप से, SELECT खंड किसी भी कॉलम का संदर्भ नहीं दे सकता है, अन्यथा आप त्रुटि प्राप्त करेंगे (सही) त्रुटि प्राप्त करें, "कॉलम चयनित में अमान्य है क्योंकि यह ग्रुप बाय" में शामिल नहीं है।

इसलिए, एक शाब्दिक मान का उपयोग किया जाना चाहिए (क्योंकि SQL शून्य कॉलम के साथ परिणामसेट की अनुमति नहीं देता है - क्यों ?!) और शाब्दिक मान 1 ( INTEGER ) का उपयोग आमतौर पर किया जाता है: यदि HAVING क्लॉज TRUE मूल्यांकन करता है तो परिणामसेट एक होगा पंक्ति 1 दिखाते हुए एक कॉलम के साथ पंक्ति, अन्यथा आपको खाली सेट मिलता है।

उदाहरण: यह पता लगाने के लिए कि क्या कॉलम में एक से अधिक विशिष्ट मान हैं:

SELECT 1
  FROM tableA
HAVING MIN(colA) < MAX(colA);

यह जो करता है वह करता है - यह हमेशा पूर्णांक 1 लौटाएगा। यह जांचने के लिए प्रयोग किया जाता है कि आपके रिकॉर्ड से मेल खाने वाला रिकॉर्ड मौजूद है या नहीं।


select 1 from table की प्रत्येक पंक्ति के लिए निरंतर 1 लौटाएगा। यह तब उपयोगी होता है जब आप सस्ते रूप से यह निर्धारित करना चाहते हैं कि रिकॉर्ड आपके where मेल खाता है और / या join


select 1 from table कुछ डेटाबेस द्वारा किसी कनेक्शन के परीक्षण के लिए एक जांच के रूप में किया जाता है ताकि यह देखने के लिए कि यह जीवित है या नहीं, अक्सर कनेक्शन पूल से कनेक्शन को पुनर्प्राप्त करने या वापस करने पर उपयोग किया जाता है।








plsql