2013-10-14 10 views
12

मुझे एसक्यूएल में एक सामान्य संदेह है। वास्तव में "शीर्ष 1 1" क्या होगा? नीचे दी गई क्वेरी का अर्थ क्या है?एसक्यूएल में शीर्ष 1 1 और 1 का चयन करें क्वेरी का चयन करें

select top 1 1 from Worker W where not exists (select 1 from Manager M where M.Id = W.Id) 

एसक्यूएल सर्वर क्वेरी में "टॉप 1 1" और "चयन 1" के बीच अंतर क्या है?

उत्तर

7

SELECT TOP 1 परिणाम SELECT 1 के रूप में जहां सेट परिणाम में 1 वापस आ जाएगी में बहुत 1 रिकॉर्ड का चयन सेट मतलब

+3

सहायता के लिए धन्यवाद। लेकिन "शीर्ष 1 1" का अर्थ है? – James

+0

SELECT TOP 1 आपकी क्वेरी के परिणाम सेट में बहुत पहले पंक्ति का चयन कर रहा है और अन्य 1 किसी भी रिकॉर्ड के लिए 1 लौटाएगा जहां प्रबंधकों की तालिका में कोई संबंधित रिकॉर्ड नहीं है –

4

अगर वहाँ कम से कम एक कार्यकर्ता (शीर्ष 1) कोई प्रबंधक के साथ है अनुरोध पाता है। चयन 1 खंड "वापसी पूर्ण" के रूप में कार्य करता है।

यदि कोई प्रबंधक है, तो अनुरोध select 1 from Manager M where M.Id = W.Id रिटर्न 1. यदि कोई प्रबंधक नहीं है, तो अनुरोध न्यूल लौटाता है।

1

SELECT TOP 1 1 बिल्कुल 0 या 1 1 एस का चयन करेगा। SELECT 11 बिल्कुल एन पंक्तियों का चयन करेगा, जहां एन आपके मानदंडों से मेल खाने वाली पंक्तियों की संख्या है।

आपके मामले में, यह पहले (TOP 1) कार्यकर्ता है जिसके पास प्रबंधक नहीं है। हालांकि, चूंकि यह SELECT TOP 1 1 है, यह सब कुछ कर रहा है अस्तित्व उस कर्मचारी के पास है जिसमें प्रबंधक नहीं है।

7

निम्नलिखित में, "टॉप 1" का हिस्सा पहला "1" का अर्थ है जो इसे एक परिणाम के बाद बंद करना है। दूसरा "1" सिर्फ इसलिए है क्योंकि लेखक वास्तव में परवाह नहीं करता कि परिणाम क्या है।

SELECT TOP 1 1 FROM WORKER 

अनिवार्य रूप से केवल विचाराधीन सिर्फ

SELECT 1 FROM Manager... 
1

अपनी तरह काम करने से क्वेरी का हिस्सा "मौजूद है" क्या यह और अधिक कुशल होता है के रूप में

SELECT TOP 1 * FROM WORKER 

ही है सच झूठा ... उदाहरण आइटम से शीर्ष 1 1 का चयन करें जहां ItemId = 4526000 यह 1 लौटाएगा क्योंकि स्थिति कहाँ है एनजी। यदि यह मेल नहीं खाता है, तो कुछ भी वापस नहीं आएगा। => मान लीजिए आइटम से शीर्ष 10 1 का चयन करें जहां आइटम आईडी = 4526000 आइटम आईडी 5 बार दोहराए जाने पर यह 5 बार 1 लौटाएगा।

संबंधित मुद्दे