मैं एसक्यूएल में कई कॉलम और अलग-अलग दिशाओं में सॉर्ट करने की कोशिश कर रहा हूं। column1
अवरोही क्रमबद्ध किया जाएगा, और column2
आरोही।
मैं यह कैसे कर सकता हूँ?
मैं एसक्यूएल में कई कॉलम और अलग-अलग दिशाओं में सॉर्ट करने की कोशिश कर रहा हूं। column1
अवरोही क्रमबद्ध किया जाएगा, और column2
आरोही।
मैं यह कैसे कर सकता हूँ?
जवाबों:
ORDER BY column1 DESC, column2
जब भी दो या दो से अधिक पंक्तियों के लिए फ़ील्ड समान होते हैं column1
, तब (अवरोही) पहले, और फिर column2
(आरोही, जो कि डिफ़ॉल्ट है) द्वारा सब कुछ ठीक हो जाता है column1
।
column1
पहले और बाद में column2
जब भी column1
दो पंक्तियों के लिए फ़ील्ड बराबर होता है।
column2
सॉर्ट करता है और फिर STABLE सॉर्ट करता है column1
। यह उन लोगों के लिए अधिक स्पष्ट है जो जानते हैं कि स्थिर छंटाई क्या है।
अन्य उत्तरों में एक ठोस उदाहरण का अभाव है, इसलिए यहां यह दिया गया है:
निम्नलिखित लोगों की तालिका को देखते हुए :
FirstName | LastName | YearOfBirth
----------------------------------------
Thomas | Alva Edison | 1847
Benjamin | Franklin | 1706
Thomas | More | 1478
Thomas | Jefferson | 1826
यदि आप नीचे दिए गए क्वेरी को निष्पादित करते हैं:
SELECT * FROM People ORDER BY FirstName DESC, YearOfBirth ASC
परिणाम सेट इस तरह दिखेगा:
FirstName | LastName | YearOfBirth
----------------------------------------
Thomas | More | 1478
Thomas | Jefferson | 1826
Thomas | Alva Edison | 1847
Benjamin | Franklin | 1706
1.Firstname asc, Lastname desc, yearOfBirst asc and 2.Firstname asc, Lastname desc, yearOfBirst desc
क्या कोई रास्ता है जिससे हम इस पर काबू पा सकते हैं?
FirstName, LastName
जब विशिष्ट के साथ डुप्लिकेट प्रविष्टियाँ थींYearOfBirth
एकाधिक कॉलम ऑर्डर करना दोनों कॉलम के संबंधित मूल्यों पर निर्भर करता है: यहां मेरा टेबल उदाहरण है, जहां दो कॉलम अक्षर और संख्याओं के साथ नाम दिए गए हैं और इन दो कॉलमों में मान asc और desc ऑर्डर हैं।
अब मैं प्रदर्शन करके आदेश आदेश नीचे क्रियान्वित करते हुए इन दो कॉलम में:
अब फिर से मैं इन दो कॉलमों में नए मान डालता हूँ, जहाँ ASC क्रम में वर्णमाला मान :
और उदाहरण तालिका के कॉलम इस तरह दिखते हैं। अब फिर से वही ऑपरेशन करें:
आप देख सकते हैं कि पहले कॉलम में मान डीएससी क्रम में हैं लेकिन दूसरा कॉलम एएससी क्रम में नहीं है।
(g, 10),(g,12)
। फिर, अपना ऑर्डर-बाय क्वेरी चलाएं, आपको ASC
ऑर्डर के रूप में दूसरा कॉलम मिलता है (इसका मतलब हैg-10,g-11,g-12)
आप कई स्थिति पर कई आदेश का उपयोग कर सकते हैं,
ORDER BY
(CASE
WHEN @AlphabetBy = 2 THEN [Drug Name]
END) ASC,
CASE
WHEN @TopBy = 1 THEN [Rx Count]
WHEN @TopBy = 2 THEN [Cost]
WHEN @TopBy = 3 THEN [Revenue]
END DESC