MySQL-এ দুটি কলাম ব্যবহার করে কাস্টম সর্টিং করার জন্য ORDER BY এর সাথে CASE স্টেটমেন্ট ব্যবহার করা হয়।
টেবিল এবং ডেটা
CREATE TABLE DemoTable1610 (
Marks INT,
Name VARCHAR(20)
);
INSERT INTO DemoTable1610 VALUES(85,'John');
INSERT INTO DemoTable1610 VALUES(78,'Carol');
INSERT INTO DemoTable1610 VALUES(78,'John');
INSERT INTO DemoTable1610 VALUES(85,'Carol');
কুয়েরি: Marks অ্যাসেন্ডিং, Marks সমান হলে Carol আগে
SELECT * FROM DemoTable1610
ORDER BY Marks, CASE WHEN Name = 'Carol' THEN 1 ELSE 0 END;
ফলাফল
+-------+-------+
| Marks | Name |
+-------+-------+
| 78 | John |
| 78 | Carol |
| 85 | John |
| 85 | Carol |
+-------+-------+
ব্যাখ্যা
ORDER BY Marks— প্রথমে Marks অনুযায়ী সর্টCASE WHEN Name='Carol' THEN 1 ELSE 0 END— Carol হলে ১, অন্যদের ০- একই Marks-এ ১ (Carol) ০ (John) থেকে বড়, তাই Carol পরে আসে (ASC ডিফল্ট)
- Carol আগে দেখাতে চাইলে
THEN 0 ELSE 1 END DESCবাTHEN -1 ELSE 0 ENDব্যবহার করুন
সর্বোচ্চ নমনীয়তা: ORDER BY FIELD()
ORDER BY Marks, FIELD(Name, 'Carol', 'John', 'David');
FIELD() মানটার ইন্ডেক্স রিটার্ন করে (১-ভিত্তিক), না পাওয়া গেলে ০। এটি একাধিক কাস্টম অর্ডারের জন্য উপযুক্ত।