MySQL-এ ORDER BY CASE ... WHEN ... THEN ... ELSE ... END কনস্ট্রাক্ট ব্যবহার করে নির্দিষ্ট মানवाले রেকর্ডগুলো ফলাফলের শুরুতে আনা যায়।
উদাহরণ: টেবিল তৈরি এবং ডেটা ইনসার্ট
mysql> create table DemoTable808(Value varchar(100)); Query OK, 0 rows affected (0.61 sec)
mysql> insert into DemoTable808 values('smith');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable808 values('Adamsmith');
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable808 values('Carolsmith');
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable808 values('smithJohn');
Query OK, 1 row affected (0.16 sec)
সকল রেকর্ড দেখানো (ডিফল্ট অর্ডার)
mysql> select * from DemoTable808;
+------------+ | Value | +------------+ | smith | | Adamsmith | | Carolsmith | | smithJohn | +------------+ 4 rows in set (0.00 sec)
'smith' দিয়ে শুরু হওয়া মানগুলো প্রথমে, তারপর বাকিগুলো অ্যালফাবেটিক্যালি
mysql> select * from DemoTable808 order by case when Value like 'smith%' then 0 else 1 end asc, Value asc;
+------------+ | Value | +------------+ | smith | | smithJohn | | Adamsmith | | Carolsmith | +------------+ 4 rows in set (0.00 sec)
ব্যাখ্যা
CASE WHEN Value LIKE 'smith%' THEN 0 ELSE 1 END- 'smith%' মিললে ০ (সর্বোচ্চ প্রাধান্য), অন্যদের ১ASC- ০ প্রথমে আসবেValue ASC- টাই ব্রেকারের জন্য সেকেন্ডারি সর্ট
বিকল্প পদ্ধতি: FIELD() ফাংশন
mysql> select * from DemoTable808
order by field(Value, 'smith', 'smithJohn', 'Adamsmith', 'Carolsmith');
ব্যবহারিক প্রয়োগ: স্ট্যাটাস ফিল্ডে 'ACTIVE' আগে, তারপর 'PENDING', শেষে 'INACTIVE' দেখাতে এই প্যাটার্ন খুব কাজে লাগে।