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

MySQL में ORDER BY CASE और IN() का उपयोग करके ग्रुप्ड फील्ड्स को कैसे ऑर्डर करें

CASE WHEN ... IN() के साथ कस्टम ऑर्डरिंग

ग्रुप्ड फील्ड्स को कस्टम ऑर्डर में सॉर्ट करने के लिए ORDER BY CASE के साथ IN() का उपयोग करें। CASE विभिन्न शर्तों का मूल्यांकन करता है जबकि ORDER BY मानों को आरोही/अवरोही क्रम में सॉर्ट करता है।

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

mysql> CREATE TABLE DemoTable (
    Value VARCHAR(40)
);

रिकॉर्ड्स इन्सर्ट करें:

mysql> INSERT INTO DemoTable VALUES ('John');
mysql> INSERT INTO DemoTable VALUES ('100&101');
mysql> INSERT INTO DemoTable VALUES ('Sam');
mysql> INSERT INTO DemoTable VALUES ('90');
mysql> INSERT INTO DemoTable VALUES ('Mike45');

सभी रिकॉर्ड्स देखें:

mysql> SELECT * FROM DemoTable;

आउटपुट:

+---------+
| Value   |
+---------+
| John    |
| 100&101 |
| Sam     |
| 90      |
| Mike45  |
+---------+

कस्टम ऑर्डर में ग्रुप्ड फील्ड्स ऑर्डर करने के लिए क्वेरी:

mysql> SELECT * FROM DemoTable
    ORDER BY CASE
        WHEN Value IN ('John', 'Sam', 'Mike45') THEN 100
        WHEN Value = '90' THEN 101
        WHEN Value = '100&101' THEN 102
        ELSE 103
    END;

आउटपुट:

+---------+
| Value   |
+---------+
| John    |
| Sam     |
| Mike45  |
| 90      |
| 100&101 |
+---------+

व्याख्या:

  • CASE WHEN ... THEN ... END: प्रत्येक मान के लिए सॉर्ट की (संख्या) असाइन करता है
  • IN ('John', 'Sam', 'Mike45'): इन तीनों मानों को प्राथमिकता 100 देता है
  • Value = '90': प्राथमिकता 101
  • Value = '100&101': प्राथमिकता 102
  • ELSE 103: अन्य सभी मान (यहां कोई नहीं)
  • ORDER BY: असाइन की गई संख्याओं के आरोही क्रम में सॉर्ट करता है (100, 101, 102, 103)

उसी प्राथमिकता वाले मानों का क्रम: एक ही THEN मान (100) वाले John, Sam, Mike45 का क्रम अनिर्दिष्ट है (आमतौर पर इन्सर्शन ऑर्डर)। द्वितीयक सॉर्ट के लिए:

ORDER BY CASE ... END, Value;

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

ORDER BY FIELD(Value, 'John', 'Sam', 'Mike45', '90', '100&101');

FIELD() सूची में मान की पोजीशन लौटाता है (नहीं मिलने पर 0), जो स्वचालित रूप से सही क्रम देता है।

  1. - MySQL में AUTO_INCREMENT कॉलम द्वारा कैसे क्रमबद्ध करें?

    MySQL में AUTO_INCREMENT कॉलम से ORDER BY करना AUTO_INCREMENT प्राथमिक कुंजी कॉलम द्वारा परिणाम क्रमबद्ध करने के लिए सीधे उस कॉलम का उपयोग करें। टेबल बनाना और डेटा डालना mysql> CREATE TABLE DemoTable ( Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, FirstName VARCHAR(100) ); Query OK, 0 rows

  1. - MySQL में आइटम का क्रम कैसे बदलें

    MySQL में आइटम का क्रम बदलने के लिए, ORDER BY एलियास नाम का उपयोग करें। पहले एक टेबल बनाते हैं: mysql> create table DemoTable653 (Product1Amount int,Product2Amount int); Query OK, 0 rows affected (0.42 sec) इन्सर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें: mysql> insert into DemoTable653

  1. - MySQL में डेटा फ़ील्ड कैसे मास्क करें

    CONCAT(), SUBSTR() और REPEAT() का उपयोग करके पासवर्ड मास्क करना डेटा फ़ील्ड मास्क करने के लिए CONCAT() के साथ REPEAT() का उपयोग करें। यहां हम # से डेटा फ़ील्ड मास्क करेंगे। पहले टेबल बनाएं: create table DemoTable1410 ( Password varchar(80) ); Query OK, 0 rows affected (0.51 sec) रिकॉर्ड डालें: ins