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

MySQL में विशिष्ट मान को पहले क्रमबद्ध करना (ORDER BY CASE/LIKE)

CASE एक्सप्रेशन के साथ कस्टम ऑर्डरिंग

विशिष्ट मानों को परिणाम सेट में पहले दिखाने के लिए ORDER BY CASE WHEN ... THEN ... ELSE ... END पैटर्न का उपयोग करें।

उदाहरण: टेबल बनाना और डेटा इन्सर्ट करना

mysql> CREATE TABLE DemoTable808(Value VARCHAR(100));
Query OK, 0 rows affected (0.61 sec)

रिकॉर्ड्स इन्सर्ट करना

mysql> INSERT INTO DemoTable808 VALUES('smith'),('Adamsmith'),('Carolsmith'),('smithJohn');
Query OK, 4 rows affected (...)

सभी रिकॉर्ड्स देखना

mysql> SELECT * FROM DemoTable808;
+------------+
| Value      |
+------------+
| smith      |
| Adamsmith  |
| Carolsmith |
| smithJohn  |
+------------+
4 rows in set (0.00 sec)

'smith' से शुरू होने वाले मान पहले क्रमबद्ध करना

mysql> SELECT * FROM DemoTable808 
    ORDER BY CASE WHEN Value LIKE 'smith%' THEN 0 ELSE 1 END ASC, Value ASC;

परिणाम

+------------+
| Value      |
+------------+
| smith      |
| smithJohn  |
| Adamsmith  |
| Carolsmith |
+------------+
4 rows in set (0.00 sec)

क्वेरी व्याख्या

  • CASE WHEN Value LIKE 'smith%' THEN 0 ELSE 1 END - 'smith%' से शुरू होने वालों को 0 (पहले), बाकी को 1 (बाद में) असाइन करता है
  • ASC - 0 पहले आता है
  • Value ASC - प्रत्येक ग्रुप के भीतर वर्णमाला क्रम

अल्टरनेटिव: FIELD() फंक्शन

विशिष्ट मानों की सूची के लिए कस्टम क्रम:

SELECT * FROM DemoTable808 
ORDER BY FIELD(Value, 'smith', 'smithJohn', 'Adamsmith', 'Carolsmith');

FIELD() फंक्शन विवरण

FIELD(str, str1, str2, str3, ...)
-- str सूची में मिलने पर स्थिति (1-आधारित) लौटाता है, नहीं मिलने पर 0

उदाहरण: रंग क्रम

ORDER BY FIELD(Color, 'RED', 'GREEN', 'BLUE', 'ORANGE')

तुलना: CASE vs FIELD()

पहलूCASE WHENFIELD()
लचीलापनजटिल शर्तें, रेंज, पैटर्नकेवल सटीक मान मिलान
पठनीयताजटिल लॉजिक के लिए बेहतरसरल सूचियों के लिए बेहतर
प्रदर्शनसमानथोड़ा तेज (आंतरिक)
NULL हैंडलिंगस्पष्ट नियंत्रणNULL = 0 (अंत में)

अन्य कस्टम ऑर्डरिंग पैटर्न

बूलियन एक्सप्रेशन (MySQL में TRUE=1, FALSE=0)

ORDER BY (Value = 'priority') DESC, Value ASC;

एकाधिक प्राथमिकता स्तर

ORDER BY 
    CASE 
        WHEN Value LIKE 'urgent%' THEN 1
        WHEN Value LIKE 'high%' THEN 2
        WHEN Value LIKE 'normal%' THEN 3
        ELSE 4
    END,
    Value;

नोट

कस्टम ऑर्डरिंग इंडेक्स उपयोग को रोक सकता है। बड़े डेटासेट्स के लिए, एक sort_order कॉलम जोड़ने और उस पर इंडेक्स बनाने पर विचार करें।

  1. Java का उपयोग करके MySQL टेबल में रिकॉर्ड डालें Java का उपयोग करके MySQL टेबल में रिकॉर्ड डालें

    JDBC Statement या PreparedStatement का उपयोग करके Java एप्लिकेशन से MySQL में रिकॉर्ड डालें। टेबल बनाना CREATE TABLE DemoTable( Id INT, Name VARCHAR(30), CountryName VARCHAR(30), Age INT ); Query OK, 0 rows affected (0.66 sec) Java कोड (Statement) 0) { System.out.

  1. - MySQL में NOT IN का उपयोग करके केवल विशिष्ट पंक्तियाँ हटाएं

    MySQL में DELETE स्टेटमेंट के साथ NOT IN ऑपरेटर का उपयोग करके आप उन पंक्तियों को हटा सकते हैं जो दी गई सूची में नहीं हैं। यह विशिष्ट रिकॉर्ड रखते हुए बाकी हटाने के लिए उपयोगी है। टेबल बनाएं और डेटा डालें mysql> CREATE TABLE DemoTable1830 ( StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,

  1. - MySQL में AND और OR ऑपरेटर के साथ विशिष्ट रिकॉर्ड कैसे प्राप्त करें

    उदाहरण टेबल बनाएं: ); डेटा डालें: INSERT INTO DemoTable2015 VALUES (4, Robert, US); क्वेरी StudentName=David OR (StudentCountryName=UK AND StudentId=3): WHERE StudentName = David OR StudentCountryName = UK AND StudentId = 3; परिणाम +-----------+-------------+--------------------+ | Stu