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

MySQL में एक ही फ़ील्ड पर कस्टम सॉर्ट ऑर्डर लागू करें

इसके लिए ORDER BY IF() का उपयोग करें।

आइए पहले एक टेबल बनाते हैं:

mysql> create table DemoTable801 ( Score int ); 
Query OK, 0 rows affected (0.69 sec)

इन्सर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें:

mysql> insert into DemoTable801 values(30); 
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable801 values(99); 
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable801 values(45); 
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable801 values(55); 
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable801 values(99); 
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable801 values(69); 
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable801 values(25); 
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable801 values(79); 
Query OK, 1 row affected (0.12 sec)

सेलेक्ट स्टेटमेंट का उपयोग करके टेबल से सभी रिकॉर्ड प्रदर्शित करें:

mysql> select * from DemoTable801;

यह निम्नलिखिक आउटपुट देगा:

+-------+
| Score |
+-------+
| 30    |
| 99    |
| 45    |
| 55    |
| 99    |
| 69    |
| 25    |
| 79    |
+-------+
8 rows in set (0.00 sec)

एक ही फ़ील्ड पर कस्टम सॉर्ट ऑर्डर लागू करने की क्वेरी

mysql> select * from DemoTable801 order by if(Score=99,1,0), Score;

यह निम्नलिखिक आउटपुट देगा:

+-------+
| Score |
+-------+
| 25    |
| 30    |
| 45    |
| 55    |
| 69    |
| 79    |
| 99    |
| 99    |
+-------+
8 rows in set (0.00 sec)

व्याख्या

  • IF(Score=99, 1, 0) स्कोर 99 के लिए 1, अन्यथा 0 लौटाता है
  • ORDER BY IF(...), Score पहले IF परिणाम द्वारा सॉर्ट करता है (0 पहले, फिर 1), फिर Score द्वारा
  • इसलिए 99 वाले अंत में आते हैं, बाकी आरोही क्रम में
  • यह "विशिष्ट मानों को अंत में या शुरुआत में रखने" के लिए उपयोगी है

अधिक जटिल कस्टम ऑर्डर

ORDER BY CASE 
  WHEN Score = 99 THEN 3
  WHEN Score > 80 THEN 2
  WHEN Score > 50 THEN 1
  ELSE 0
END, Score;

यह स्कोर को श्रेणियों में समूहित करता है: 99 पहले, फिर 80+, फिर 50+, फिर बाकी।

  1. - MySQL में ORDER BY FIELD() का उपयोग करके IN क्लॉज के क्रम में परिणाम प्राप्त करना

    MySQL में ORDER BY FIELD() के साथ IN क्लॉज के क्रम को बनाए रखना डिफ़ॉल्ट रूप से IN() क्लॉज परिणामों को तालिका के प्राकृतिक क्रम में लौटाता है। ORDER BY FIELD() का उपयोग करके परिणामों को IN सूची के क्रम में क्रमबद्ध किया जा सकता है। व्यावहारिक उदाहरण तालिका बनाना CREATE TABLE DemoTable ( Id IN

  1. - MySQL में ORDER BY FIELD() से एकाधिक ID के अनुसार क्रमबद्ध करें

    FIELD() फंक्शन के साथ कस्टम क्रम में सॉर्टिंग जब आपको किसी कॉलम के मानों को एक विशिष्ट, गैर-मानक क्रम में व्यवस्थित करना हो, तो ORDER BY FIELD(column, value1, value2, ...) का उपयोग करें। टेबल और डेटा CREATE TABLE DemoTable( ClientId VARCHAR(40), ClientName VARCHAR(40) ); Query OK, 0 rows a

  1. - MySQL में ORDER BY FIELD और ID से कस्टम सॉर्ट और द्वितीयक सॉर्ट

    MySQL में ORDER BY FIELD() का उपयोग करके एक कॉलम को कस्टम क्रम में सॉर्ट करें, फिर दूसरे कॉलम से द्वितीयक सॉर्ट लागू करें। सिंटैक्स SELECT * FROM टेबल_नाम ORDER BY FIELD(कॉलम1, मान1, मान2, ...) DESC/ASC, कॉलम2 DESC/ASC; उदाहरण: Mike को पहले रखें, फिर ID अवरोही क्रम में 1. टेबल बनाएं );