Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL में दो अलग-अलग कॉलम का उपयोग करके कस्टम सॉर्टिंग कैसे करें?

MySQL में ORDER BY के साथ CASE स्टेटमेंट का उपयोग करके दो कॉलम के आधार पर कस्टम क्रमबद्धीकरण (custom sorting) किया जा सकता है।

उदाहरण परिदृश्य

पहले अंकों (Marks) के अनुसार क्रमबद्ध करें, समान अंकों के लिए 'Carol' को 'John' से पहले रखें।

तालिका और डेटा

mysql> CREATE TABLE DemoTable (Marks INT, Name VARCHAR(20));
mysql> INSERT INTO DemoTable VALUES 
    -> (85, 'John'), (78, 'Carol'), (78, 'John'), (85, 'Carol');

डेटा

+-------+-------+
| Marks | Name  |
+-------+-------+
|    85 | John  |
|    78 | Carol |
|    78 | John  |
|    85 | Carol |
+-------+-------+

कस्टम सॉर्ट क्वेरी

mysql> SELECT * FROM DemoTable
    -> ORDER BY Marks, 
    -> CASE WHEN Name = 'Carol' THEN 1 ELSE 0 END;

परिणाम

+-------+-------+
| Marks | Name  |
+-------+-------+
|    78 | John  |
|    78 | Carol |
|    85 | John  |
|    85 | Carol |
+-------+-------+

व्याख्या

  1. पहले Marks द्वारा ASC (डिफ़ॉल्ट): 78, 78, 85, 85
  2. समान Marks (78) के लिए: Carol=1, John=0 → DESC से Carol पहले
  3. समान Marks (85) के लिए: Carol=1, John=0 → Carol पहले

सामान्य CASE सॉर्टिंग पैटर्न

ORDER BY 
    CASE 
        WHEN priority = 'high' THEN 1
        WHEN priority = 'medium' THEN 2
        WHEN priority = 'low' THEN 3
        ELSE 4
    END,
    created_date;

मुख्य बिंदु

  • CASE कस्टम प्राथमिकता मान निर्दिष्ट करता है
  • संख्यात्मक मानों का उपयोग क्रम नियंत्रित करता है (कम = पहले)
  • एकाधिक CASE या जटिल तर्क संभव
  • द्वितीयक क्रम के लिए अतिरिक्त कॉलम जोड़ें
  1. - MySQL में एक क्वेरी से दो कॉलम कैसे अपडेट करें?

    MySQL में एक ही UPDATE स्टेटमेंट में एकाधिक कॉलम अपडेट करने के लिए, SET क्लॉज़ में कॉलम को कॉमा से अलग करके सूचीबद्ध करें। यह एटॉमिक ऑपरेशन सुनिश्चित करता है और क्वेरी ओवरहेड कम करता है। उदाहरण: FirstName और LastName एक साथ अपडेट करना डेमो टेबल बनाएं: mysql> CREATE TABLE DemoTable1909 ( Id

  1. - MySQL में फ्लोट मान को दो कॉलम में कैसे विभाजित करें?

    MySQL में दशमलव संख्या (फ्लोट/स्ट्रिंग) को दशमलव बिंदु से पहले और बाद के भाग में विभाजित करने के लिए, SUBSTRING_INDEX() के साथ CAST() का उपयोग करें। यह वित्तीय डेटा, माप, और निर्देशांक प्रोसेसिंग के लिए उपयोगी है। उदाहरण: 100.50 → 100 और 50 डेमो टेबल बनाएं: mysql> CREATE TABLE DemoTable1951 (V

  1. - MySQL में कस्टम फंक्शन का उपयोग करके तारीख को मान्य करें

    कस्टम फंक्शन बनाएं DELIMITER ; टेस्ट केस 1: NULL मान SELECT isValidDate(NULL); +-------------------+ | isValidDate(NULL) | +-------------------+ | 0 | +-------------------+ टेस्ट केस 2: वैध तारीख SELECT isValidDate(2019-10-21); +---------------------------+ | isValidDate(2019-10