2012-12-27 48 views
8

यह मेरी न्यूज़ापैपर तालिका है।क्लॉज द्वारा ऑर्डर कैसे करता है यदि दो मान बराबर हैं?

National News A 1 
    Sports   D 1 
    Editorials  A 12 
    Business  E 1 
    Weather   C 2 
    Television  B 7 
    Births   F 7 
    Classified  F 8 
    Modern Life  B 1 
    Comics   C 4 
    Movies   B 4 
    Bridge   B 2 
    Obituaries  F 6 
    Doctor Is In F 6 

जब मैं इस क्वेरी

select feature,section,page from NEWSPAPER 
where section = 'F' 
order by page; 

चलाने यह

Doctor Is In F 6 
Obituaries  F 6 
Births   F 7 
Classified  F 8 

लेकिन केविन Loney के Oracle 10g पूर्ण संदर्भ में उत्पादन इस

Obituaries  F 6 
Doctor Is In F 6 
Births   F 7 
Classified  F 8 

की तरह है इस उत्पादन देता है कृपया मुझे अंडरस्टान में मदद करें डी यह कैसे हो रहा है?

+3

क्या वे एक ही आउटपुट नहीं हैं? किसी भी दर पर, एक ही मूल्य वाले परिणामों के लिए आदेश अनिर्धारित है, और शायद डिस्क पर संग्रहीत होने के तरीके के आधार पर वापस आ जाता है। – mellamokb

+0

आउटपुट वही है? – Jake1164

+0

ओह क्षमा करें पुस्तक से आउटपुट को ठीक से कॉपी करने में असमर्थ था। सही ढंग से पुस्तक से आउटपुट जोड़ा गया। –

उत्तर

7

रिलेशनल डेटाबेस में, टेबल सेट कर रहे हैं और अव्यवस्थित हैं। order by खंड मुख्य रूप से आउटपुट उद्देश्यों के लिए उपयोग किया जाता है (और कुछ अन्य मामलों जैसे कि rownum युक्त उपकुंजी)।

यह शुरू करने के लिए एक अच्छी जगह है। एसक्यूएल मानक निर्दिष्ट नहीं करता है कि क्या होना चाहिए जब order by पर कुंजी समान हों। और यह अच्छे कारण के लिए है। सॉर्टिंग के लिए विभिन्न तकनीकों का उपयोग किया जा सकता है। कुछ स्थिर हो सकते हैं (मूल आदेश को संरक्षित)। कुछ विधियां नहीं हो सकती हैं।

इस पर फ़ोकस करें कि क्या पंक्तियां सेट में हैं, न कि उनके आदेश। वैसे, मैं इसे एक दुर्भाग्यपूर्ण उदाहरण मानता हूं। इस पुस्तक में अपने उदाहरणों में संदिग्ध प्रकार नहीं होना चाहिए।

+0

आपका क्या मतलब है "और यह अच्छे कारण के लिए है"? –

+2

@ अभिषेककुमार। । । मेरा मतलब यह है कि मानक डेटाबेस विक्रेताओं को कुछ चीजों को लागू करने के तरीके पर निर्भर करता है, और यह एक अच्छी बात है। –

+0

विस्तार करने के लिए, ऑर्डरिंग गहन प्रसंस्करण हो सकती है: डिफॉल्ट ऑर्डरिंग पत्ते विक्रेताओं को उन प्रश्नों को अनुकूलित करने के लिए स्वतंत्र नहीं है जिनके पास क्लॉज द्वारा ऑर्डर नहीं है, हालांकि वे फिट दिखाई देते हैं। – taswyn

7

आप विश्वसनीय, प्रतिलिपि प्रस्तुत करने योग्य आदेश की जरूरत है तब होता है जब आपके ORDER BY खंड के पहले कॉलम में दो मान ही कर रहे हैं, तो आप हमेशा एक और प्रदान करना चाहिए, माध्यमिक स्तंभ भी आदेश करने के लिए। जबकि आप यह मानने में सक्षम हो सकते हैं कि वे स्वयं दर्ज किए गए क्रम के आधार पर स्वयं को क्रमबद्ध करेंगे (लगभग हमेशा मेरे ज्ञान के मामले में, लेकिन ध्यान रखें कि SQL मानक डिफ़ॉल्ट ऑर्डरिंग का कोई भी रूप निर्दिष्ट नहीं करता है) या अनुक्रमणिका, आपको कभी नहीं करना चाहिए विशेष रूप से आपके द्वारा उपयोग किए जा रहे इंजन के लिए दस्तावेज किया गया है - और तब भी मैं व्यक्तिगत रूप से उस पर भरोसा नहीं करता)।

आपकी क्वेरी, यदि आप प्रत्येक पृष्ठ के भीतर सुविधा के द्वारा वर्णमाला छंटाई चाहता था, किया जाना चाहिए:

select feature,section,page from NEWSPAPER 
where section = 'F' 
order by page, feature;
+0

@ taswyn- यह बिल्कुल अगला उदाहरण कहता है। लेकिन मैं सोच रहा था कि पुस्तक की तुलना में मुझे अलग आउटपुट क्यों मिला? यह जानना चाहता था कि संभालने का कोई डिफ़ॉल्ट तरीका है या नहीं। –

+0

भले ही आपने डिफ़ॉल्ट ऑर्डरिंग के द्वारा दर्ज ऑर्डर को माना हो, फिर भी आपको शॉर्टकट लेने के बजाए अपने प्रोग्राम किए गए तर्क पर भरोसा करना चाहिए जिसके परिणामस्वरूप आप जिन स्थितियों को नहीं ढूंढ पाएंगे। एसक्यूएल मानक डिफ़ॉल्ट ऑर्डरिंग निर्दिष्ट नहीं करता है। मेरे ज्ञान के लिए ओरेकल एक डिफ़ॉल्ट ऑर्डरिंग दस्तावेज नहीं करता है, जिसका अर्थ है कि आप जिस पर भरोसा करते हैं क्योंकि आपको लगता है कि पुन: उत्पन्न परिणाम अब बदल सकते हैं। किसी भी परिणाम को आप विश्वसनीय रूप से देखना चाहते हैं हमेशा आपके प्रोग्राम तर्क द्वारा प्रतिनिधित्व किया जाना चाहिए। विशेष रूप से आपके टूल्स या कोड द्वारा परिभाषित नहीं किए गए किसी भी चीज़ के बारे में धारणा न करें। – taswyn

+0

क्या आपको कोई विचार है कि परिणाम-सेट ऑर्डर करते समय कौन सा कॉलम उच्च वरीयता प्राप्त करेगा।मैं स्कोरिंग स्टोर करने वाले कॉलम के आधार पर कुछ रैंकिंग सामानों पर काम कर रहा हूं, लेकिन समस्या यह है कि कई पंक्तियों में समान स्कोर मान होते हैं और जब मैं उन्हें लाता हूं तो वे यादृच्छिक क्रम में आते हैं। अगर मैं इंट टाइप की प्राथमिक कुंजी का उपयोग करूंगा क्योंकि दूसरा सॉर्टिंग तर्क हमेशा मुझे उसी क्रम में परिणाम देगा। – sumit

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

  • कोई संबंधित समस्या नहीं^_^