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

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 DemoTable VALUES ('Chris', 98), ('David', 45), ('Bob', 56), ('Sam', 89), ('Carol', 78);

डेटा:

+-------+-------+
| Name  | Score |
+-------+-------+
| Chris | 98    |
| David | 45    |
| Bob   | 56    |
| Sam   | 89    |
| Carol | 78    |
+-------+

क्वेरी: Sam को अंत में, बाकी Score DESC

SELECT * FROM DemoTable 
ORDER BY IF(Name = 'Sam', 1, 0) ASC, Score DESC;

परिणाम:

+-------+-------+
| Name  | Score |
+-------+-------+
| Chris | 98    |
| Carol | 78    |
| Bob   | 56    |
| David | 45    |
| Sam   | 89    |
+-------+-------+

व्याख्या

  • IF(Name = 'Sam', 1, 0) — Sam के लिए 1, बाकी के लिए 0
  • ASC — 0 पहले (Sam नहीं), फिर 1 (Sam)
  • समान मान (0) वालों में Score DESC से सॉर्ट

CASE WHEN विकल्प (अधिक लचीला)

ORDER BY CASE 
    WHEN Name = 'Sam' THEN 3
    WHEN Name = 'VIP' THEN 2
    ELSE 1
END, Score DESC;

उपयोग केस

  • विशिष्ट रिकॉर्ड को शीर्ष/अंत में पिन करना
  • स्टेटस के अनुसार सॉर्ट: 'Active' → 'Pending' → 'Inactive'
  • फीचर्ड आइटम पहले दिखाना

प्रदर्शन नोट

ORDER BY IF(...) इंडेक्स का उपयोग नहीं कर सकता। छोटे परिणाम सेट के लिए ठीक है, बड़े सेट के लिए डिज़ाइन पर पुनर्विचार करें।

  1. - MySQL में MONTH() और YEAR() से विशिष्ट माह-वर्ष के रिकॉर्ड प्राप्त करें

    डेट कॉलम से माह और वर्ष निकालकर फ़िल्टर करने के लिए MySQL के MONTH() और YEAR() फ़ंक्शन का उपयोग करें। टेबल बनाएं mysql> CREATE TABLE DemoTable1846 ( PurchaseDate DATE ); डेटा डालें mysql> INSERT INTO DemoTable1846 VALUES(2019-01-10); mysql> INSERT INTO DemoTable1846 VALUES(2019-12-24)

  1. - MySQL में केवल विशिष्ट रिकॉर्ड की सूची को ASC क्रम में प्रदर्शित करें

    समाधान ORDER BY CASE स्टेटमेंट का उपयोग करके कस्टम क्रम लागू करें। उदाहरण टेबल बनाएं: INSERT INTO DemoTable2039 VALUES (John Doe), (John Smith), (Chris Brown), (Adam Smith), (David Miller); कस्टम क्रम क्वेरी Smith वाले नामों को अंत में रखें, फिर वर्णानुक्रम क्रम: ORDER BY CASE WHEN Name LIKE %Sm

  1. - MySQL में ORDER BY CASE WHEN से कस्टम क्रम में पंक्तियाँ कैसे व्यवस्थित करें?

    CASE WHEN सिंटैक्स select * from yourTableName order by case when name=John then 110 when name=Bob then 105 when name=David then 104 else 101 end; उदाहरण insert into demo51(name) values(John), (Bob), (David), (Sam); परिणाम: कस्टम प्राथमिकता के अनुसार DESC क्रम +----+-------+ |