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

MySQL में ORDER BY CASE का उपयोग करके ENUM प्रकार के मानों को शर्तों के आधार पर क्रमबद्ध करना

MySQL में कस्टम ENUM क्रमबद्धता

MySQL ENUM कॉलम अपने आंतरिक क्रम (परिभाषा क्रम) के अनुसार क्रमबद्ध होते हैं, वर्णानुक्रमिक नहीं। कस्टम क्रमबद्धता के लिए, ORDER BY CASE स्टेटमेंट का उपयोग करके प्रत्येक ENUM मान को क्रमबद्धता प्राथमिकता मान पर मैप करें।

उदाहरण: कार्ड क्रमबद्धता (A, K, Q, J क्रम)

mysql> CREATE TABLE DemoTable1461 (
    -> DeckOfCards ENUM('K','J','A','Q')
    -> );
Query OK, 0 rows affected (0.64 sec)

mysql> INSERT INTO DemoTable1461 VALUES ('K'), ('A'), ('J'), ('Q');
Query OK, 4 rows affected (0.17 sec)

mysql> SELECT * FROM DemoTable1461;
+-------------+
| DeckOfCards |
+-------------+
| K           |
| A           |
| J           |
| Q           |
+-------------+
4 rows in set (0.00 sec)

कस्टम क्रम के साथ ORDER BY CASE

mysql> SELECT * FROM DemoTable1461
    -> ORDER BY CASE DeckOfCards
    ->   WHEN 'A' THEN 100
    ->   WHEN 'K' THEN 101
    ->   WHEN 'Q' THEN 102
    ->   ELSE 103
    -> END;

परिणाम: कस्टम क्रम A, K, Q, J

+-------------+
| DeckOfCards |
+-------------+
| A           |
| K           |
| Q           |
| J           |
+-------------+
4 rows in set (0.00 sec)

डिफ़ॉल्ट ENUM क्रम बनाम कस्टम

क्रम प्रकारक्रमकारण
डिफ़ॉल्ट (परिभाषा)K, J, A, QENUM परिभाषा क्रम: 'K','J','A','Q'
वर्णानुक्रमिकA, J, K, Qस्ट्रिंग तुलना
कस्टम (CASE)A, K, Q, Jउपयोगकर्ता-परिभाषित प्राथमिकता

सरल विकल्प: FIELD() फ़ंक्शन

SELECT * FROM DemoTable1461
ORDER BY FIELD(DeckOfCards, 'A', 'K', 'Q', 'J');

FIELD(str, val1, val2, ...) मान की स्थिति (1-आधारित) लौटाता है, कस्टम क्रमबद्धता के लिए आदर्श।

प्रदर्शन नोट

  • CASE/FIELD इंडेक्स उपयोग को रोकता है (फ़ंक्शन-आधारित क्रमबद्धता)
  • छोटी टेबल/ENUM के लिए स्वीकार्य
  • बड़े डेटासेट के लिए: क्रमबद्धता कॉलम जोड़ें या कवरिंग इंडेक्स का उपयोग करें

अवरोही क्रम

ORDER BY CASE DeckOfCards
    WHEN 'J' THEN 1 WHEN 'Q' THEN 2 WHEN 'K' THEN 3 WHEN 'A' THEN 4 END DESC;
  1. - MySQL में ORDER BY IF(): शर्त के आधार पर रिकॉर्ड सॉर्ट करें

    MySQL ORDER BY IF(): सशर्त क्रमबद्धता ORDER BY IF(condition, value_if_true, value_if_false) का उपयोग करके आप किसी शर्त के आधार पर कस्टम सॉर्टिंग क्रम परिभाषित कर सकते हैं। उदाहरण: Sam को अंत में रखें, बाकी स्कोर से अवरोही टेबल बनाएं: CREATE TABLE DemoTable (Name VARCHAR(50), Score INT); INSERT INTO

  1. - MySQL में शर्त के साथ ORDER BY और SELECT कैसे करें?

    कंडीशनल ORDER BY: जीरो वैल्यू अंत में किसी कॉलम को सॉर्ट करते समय खास मान (जैसे 0) को अंत में रखने और बाकी को नॉर्मल ऑर्डर में रखने के लिए बूलियन एक्सप्रेशन का उपयोग करें। सिंटैक्स SELECT * FROM yourTableName ORDER BY yourColumnName = 0, yourColumnName; टेबल बनाना और डेटा इन्सर्ट करना CREATE TABL

  1. - MySQL में शर्तों के आधार पर रिकॉर्ड्स को कैसे बदलें?

    MySQL CASE स्टेटमेंट का उपयोग करके सशर्त अपडेट MySQL में विशिष्ट शर्तों के आधार पर रिकॉर्ड्स को अपडेट करने के लिए CASE स्टेटमेंट का उपयोग किया जाता है। यह आपको एक ही क्वेरी में कई शर्तों को संभालने की अनुमति देता है। उदाहरण: खिलाड़ियों के स्कोर अपडेट करना सबसे पहले एक टेबल बनाते हैं और कुछ डेटा डाल