MySQL-এ ORDER BY CASE এক্সপ্রেশন ব্যবহার করে নির্দিষ্ট শর্তের ভিত্তিতে কাস্টম সর্টিং করা যায়। এটি স্ট্যান্ডার্ড ASC/DESC সর্টিংয়ের বাইরে ফ্লেক্সিবিলিটি দেয়।
টেবিল ও ডেটা
mysql> CREATE TABLE DemoTable2039 (
-> Name VARCHAR(20)
-> );
Query OK, 0 rows affected (0.62 sec)
mysql> INSERT INTO DemoTable2039 VALUES ('John Doe'), ('John Smith'), ('Chris Brown'), ('Adam Smith'), ('David Miller');
mysql> SELECT * FROM DemoTable2039; +--------------+ | Name | +--------------+ | John Doe | | John Smith | | Chris Brown | | Adam Smith | | David Miller | +--------------+
কাস্টম সর্টিং কোয়ারি
শর্ত: যাদের নামের মধ্যে 'Smith' আছে সেগুলো শেষে, বাকিগুলো আগে, তারপর নাম অনুযায়ী ASC।
mysql> SELECT * FROM DemoTable2039
-> ORDER BY
-> CASE WHEN Name LIKE '%Smith%' THEN 101 ELSE 100 END,
-> Name;
আউটপুট
+--------------+ | Name | +--------------+ | Chris Brown | | David Miller | | John Doe | | Adam Smith | | John Smith | +--------------+
ব্যাখ্যা: CASE এক্সপ্রেশন 'Smith' না থাকলে ১০০, থাকলে ১০১ রিটার্ন করে। সেজন্য নন-স্মিথ আগে আসে। তারপর সেকেন্ডারি সর্ট Name দিয়ে অক্ষরক্রমে।