खोज…


स्तंभ के मान के आधार पर शीर्ष x पंक्तियों को वापस करने के लिए TOP के साथ ORDER BY का उपयोग करें

इस उदाहरण में, हम GROUP BY का उपयोग करके न केवल दी गई पंक्तियों के प्रकार का निर्धारण कर सकते हैं, बल्कि पंक्तियों को भी लौटा सकते हैं, क्योंकि हम परिणाम सेट को सीमित करने के लिए TOP का उपयोग कर रहे हैं।

मान लें कि हम एक अनाम लोकप्रिय क्यू एंड ए साइट से शीर्ष 5 उच्चतम प्रतिष्ठा वाले उपयोगकर्ताओं को वापस करना चाहते हैं।

बिना आदेश द्वारा

यह क्वेरी डिफ़ॉल्ट रूप से क्रमबद्ध शीर्ष 5 पंक्तियों को लौटाती है, जो इस मामले में "आईडी" है, तालिका में पहला कॉलम (भले ही यह परिणामों में दिखाया गया कॉलम नहीं है)।

SELECT TOP 5 DisplayName, Reputation
FROM Users

रिटर्न ...

प्रदर्शित होने वाला नाम प्रतिष्ठा
समुदाय 1
ज्योफ डेलगास 12567
जारोद डिक्सन 11,739
जेफ एटवुड 37,628
जोएल स्पोलस्की 25,784

ORDER द्वारा

SELECT TOP 5 DisplayName, Reputation
FROM Users
ORDER BY Reputation desc

रिटर्न ...

प्रदर्शित होने वाला नाम प्रतिष्ठा
JonSkeet 865,023
डारिन दिमित्रोव 661,741
BalusC 650,237
हंस पसंत 625,870
मार्क ग्रेवल 601,636

टिप्पणियों

SQL के कुछ संस्करण (जैसे कि MySQL) एक SELECT के अंत में एक LIMIT क्लॉज का उपयोग करते हैं, उदाहरण के लिए, शुरुआत में TOP बजाय:

SELECT DisplayName, Reputation
FROM Users
ORDER BY Reputation DESC
LIMIT 5

कई कॉलमों के आधार पर छंटनी

SELECT DisplayName, JoinDate, Reputation
FROM Users
ORDER BY JoinDate, Reputation
प्रदर्शित होने वाला नाम शामिल होने की तारीख प्रतिष्ठा
समुदाय 2008-09-15 1
जेफ एटवुड 2008-09-16 25,784
जोएल स्पोलस्की 2008-09-16 37,628
जारोद डिक्सन 2008-10-03 11,739
ज्योफ डेलगास 2008-10-03 12567

कॉलम संख्या (नाम के बजाय) द्वारा छंटनी

आप कॉलम के नंबर का उपयोग कर सकते हैं (जहां बाएं कॉलम '1' है) यह इंगित करने के लिए कि कॉलम को उसके नाम से कॉलम का वर्णन करने के बजाय किस आधार पर सॉर्ट करना है।

प्रो: यदि आपको लगता है कि यह संभावना है कि आप बाद में कॉलम नाम बदल सकते हैं, तो ऐसा करने से यह कोड नहीं टूटेगा।

Con: यह आम तौर पर क्वेरी की पठनीयता को कम कर देगा (यह तुरंत स्पष्ट हो जाता है कि 'ORDER BY प्रतिष्ठा' का अर्थ क्या है, जबकि 'ORDER BY 14' को कुछ गिनती की आवश्यकता है, शायद स्क्रीन पर उंगली के साथ।)

यह क्वेरी कॉलम नाम Reputation बजाय चयनित कथन से संबंधित कॉलम स्थिति 3 में जानकारी के आधार पर Reputation

SELECT DisplayName, JoinDate, Reputation
FROM Users
ORDER BY 3
प्रदर्शित होने वाला नाम शामिल होने की तारीख प्रतिष्ठा
समुदाय 2008-09-15 1
जारोद डिक्सन 2008-10-03 11,739
ज्योफ डेलगास 2008-10-03 12567
जोएल स्पोलस्की 2008-09-16 25,784
जेफ एटवुड 2008-09-16 37,628

उपनाम द्वारा आदेश

तार्किक क्वेरी प्रोसेसिंग ऑर्डर के कारण, उपनाम का उपयोग क्रम में किया जा सकता है।

SELECT DisplayName, JoinDate as jd, Reputation as rep
FROM Users
ORDER BY jd, rep

और चयनित कथन में स्तंभों के सापेक्ष क्रम का उपयोग कर सकते हैं। ऊपर दिए गए उदाहरण के रूप में एक ही उदाहरण का उपयोग करें और उपनाम का उपयोग करने के बजाय संबंधित क्रम का उपयोग करें जैसे प्रदर्शन नाम के लिए यह 1 है, जद के लिए यह 2 है और इसी तरह

SELECT DisplayName, JoinDate as jd, Reputation as rep
FROM Users
ORDER BY 2, 3

अनुकूलित छँटाई क्रम

विभाग द्वारा इस तालिका Employee को क्रमबद्ध करने के लिए, आप ORDER BY Department उपयोग करेंगे। हालाँकि, यदि आप एक अलग प्रकार का क्रम चाहते हैं जो वर्णानुक्रमिक नहीं है, तो आपको Department मानों को अलग-अलग मानों में मैप करना होगा जो सही ढंग से क्रमबद्ध हों; यह एक CASE अभिव्यक्ति के साथ किया जा सकता है:

नाम विभाग
हसन आईटी
यूसुफ मानव संसाधन
हिलेरी मानव संसाधन
जो आईटी
प्रमुदित मानव संसाधन
केन मुनीम
SELECT *
FROM Employee
ORDER BY CASE Department
         WHEN 'HR'         THEN 1
         WHEN 'Accountant' THEN 2
         ELSE                   3
         END;
नाम विभाग
यूसुफ मानव संसाधन
हिलेरी मानव संसाधन
प्रमुदित मानव संसाधन
केन मुनीम
हसन आईटी
जो आईटी


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow