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

MySQL में ORDER BY CASE WHEN का उपयोग करके कस्टम क्रम में सॉर्ट करना

MySQL में ORDER BY CASE: कस्टम सॉर्टिंग क्रम परिभाषित करना

जब आपको डिफॉल्ट सॉर्टिंग (आरोही/अवरोही) के अलावा एक विशिष्ट क्रम में परिणाम चाहिए, तो ORDER BY CASE का उपयोग करें।

उदाहरण: रंगों को कस्टम क्रम में सॉर्ट करें

टेबल बनाएं:

CREATE TABLE DemoTable (
    Color VARCHAR(100)
);

INSERT INTO DemoTable VALUES ('Red'), ('Green'), ('Blue'), ('Yellow');

डेटा:

+--------+
| Color  |
+--------+
| Red    |
| Green  |
| Blue   |
| Yellow |
+--------+

कस्टम क्रम: Blue → Green → Yellow → Red

SELECT * FROM DemoTable 
ORDER BY CASE Color 
    WHEN 'Blue'   THEN 10 
    WHEN 'Green'  THEN 20 
    WHEN 'Yellow' THEN 30 
    ELSE 100 
END;

परिणाम:

+--------+
| Color  |
+--------+
| Blue   |
| Green  |
| Yellow |
| Red    |
+--------+

यह कैसे काम करता है?

  • CASE प्रत्येक रंग को एक संख्यात्मक मान देता है
  • ORDER BY उन संख्यात्मक मानों के आधार पर सॉर्ट करता है
  • ELSE 100 — सूचीबद्ध न किए गए मानों को अंत में रखता है

वैकल्पिक सिंटैक्स: खोजा गया CASE

ORDER BY CASE 
    WHEN Color = 'Blue'   THEN 1 
    WHEN Color = 'Green'  THEN 2 
    WHEN Color = 'Yellow' THEN 3 
    ELSE 4 
END

व्यावहारिक उपयोग केस

  • ऑर्डर स्टेटस: 'Pending' → 'Processing' → 'Shipped' → 'Delivered' → 'Cancelled'
  • प्राथमिकता: 'High' → 'Medium' → 'Low'
  • दिन: 'Monday' → 'Tuesday' → ... → 'Sunday'

टिप: संख्याएं क्रमिक हों तो बेहतर (1, 2, 3...) — अंतराल (10, 20, 30) भविष्य में मान जोड़ने के लिए जगह छोड़ते हैं।

  1. PostgreSQL में MySQL के ORDER BY FIELD() का अनुकरण कैसे करें? PostgreSQL में MySQL के ORDER BY FIELD() का अनुकरण कैसे करें?

    MySQL का ORDER BY FIELD(col, val1, val2, ...) कस्टम क्रम में सॉर्ट करता है। PostgreSQL में CASE एक्सप्रेशन या ARRAY पोजीशन से समान परिणाम प्राप्त कर सकते हैं। उदाहरण डेटा CREATE TABLE country_demo (country_name VARCHAR(10)); INSERT INTO country_demo VALUES (IND), (US), (UK), (IND), (US); विधि 1: C

  1. - MySQL में ORDER BY FIELD और OR से कस्टम क्रम में प्राथमिकता-आधारित सॉर्टिंग

    ORDER BY FIELD(col, val1, val2, ...) का उपयोग करके कस्टम प्राथमिकता क्रम में सॉर्ट करें, और WHERE ... OR ... से केवल वांछित मान चुनें। टेबल बनाएं mysql> CREATE TABLE DemoTable1884 (Marks INT); डेटा डालें mysql> INSERT INTO DemoTable1884 VALUES(55), (97), (79), (87); 98 या 87 में से उच्च प्र

  1. - MySQL में CASE WHEN के साथ काउंट कैसे करें?

    MySQL में शर्ती गिनती (कंडीशनल काउंट) करने के लिए SUM(CASE WHEN ... THEN 1 ELSE 0 END) पैटर्न का उपयोग करें। यह एक ही क्वेरी में एकाधिक शर्तों की गिनती करने का कुशल तरीका है। उदाहरण: विशिष्ट मार्क्स की गिनती प्रति छात्र डेमो टेबल बनाएं: mysql> CREATE TABLE DemoTable1910 ( FirstName VARCHAR