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

MySQL में कस्टम क्रम से फील्ड मान द्वारा सॉर्ट कैसे करें?

FIELD() फ़ंक्शन से कस्टम सॉर्ट क्रम परिभाषित करें

मानक ASC/DESC के बजाय विशिष्ट मानों के कस्टम क्रम में पंक्तियों को सॉर्ट करने के लिए ORDER BY FIELD() का उपयोग करें।

टेबल और डेटा

mysql> CREATE TABLE DemoTable (StudentId INT);
mysql> INSERT INTO DemoTable VALUES(100), (110), (90), (70), (120), (140);

मूल डेटा

mysql> SELECT * FROM DemoTable;

+-----------+
| StudentId |
+-----------+
| 100       |
| 110       |
| 90        |
| 70        |
| 120       |
| 140       |
+-----------+

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

mysql> SELECT * FROM DemoTable 
    -> ORDER BY FIELD(StudentId, '100', '70', '140', '90', '120', '110');

+-----------+
| StudentId |
+-----------+
| 100       |
| 70        |
| 140       |
| 90        |
| 120       |
| 110       |
+-----------+

FIELD() सिंटैक्स

FIELD(str, val1, val2, val3, ...)
  • प्रत्येक मान की स्थिति लौटाता है (1-आधारित)
  • मान न मिलने पर 0 लौटाता है (पहले आते हैं)
  • स्ट्रिंग तुलना के लिए मान कोट्स में दें

व्यावहारिक उदाहरण

-- प्राथमिकता के अनुसार ऑर्डर सॉर्ट
ORDER BY FIELD(priority, 'urgent', 'high', 'medium', 'low')

-- विशिष्ट स्थिति क्रम
ORDER BY FIELD(status, 'pending', 'processing', 'shipped', 'delivered', 'cancelled')

-- निर्दिष्ट मानों के बाद बाकी
ORDER BY FIELD(category, 'A', 'B', 'C'), category

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

ORDER BY CASE 
    WHEN StudentId = 100 THEN 1
    WHEN StudentId = 70 THEN 2
    WHEN StudentId = 140 THEN 3
    ELSE 4
END

प्रदर्शन नोट

FIELD() इंडेक्स का उपयोग नहीं कर सकता। बड़े डेटासेट के लिए लुकअप टेबल जॉइन या CASE पर विचार करें।

  1. - MySQL में कस्टम सॉर्टिंग करें

    MySQL में कस्टम सॉर्टिंग करने के लिए ORDER BY FIELD() का उपयोग करें। आइए पहले एक टेबल बनाते हैं: mysql> create table DemoTable -> ( -> Id int -> ); Query OK, 0 rows affected (0.82 sec) इन्सर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें: mysql> insert into DemoTable values(101); Q

  1. - MySQL में यूज़र-डिफ़ाइन्ड वेरिएबल से एक कॉलम का मान दूसरे कॉलम से प्राप्त करें

    MySQL में यूज़र-डिफ़ाइन्ड वेरिएबल (@var) का उपयोग करके पिछली पंक्ति के मान के आधार पर वर्तमान पंक्ति के लिए चल योग (क्यूमुलेटिव सम) या अन्य व्युत्पन्न मान की गणना कर सकते हैं। टेबल बनाएं mysql> CREATE TABLE DemoTable1868 (Value INT); डेटा डालें mysql> INSERT INTO DemoTable1868 VALUES(10), (2

  1. - MySQL में ORDER BY से विशिष्ट मान को अंत में कैसे सॉर्ट करें?

    ट्रिक: बूलियन अभिव्यक्ति सॉर्टिंग (full_name=Not Known) TRUE=1, FALSE=0 देता है। ASC क्रम में 0 पहले, 1 बाद में आता है। उदाहरण insert into demo57(full_name) values(John Smith), (David Miller), (Not Known), (Chris Brown); क्वेरी select * from demo57 order by (full_name=Not Known), full_name desc