MySQL-এ ORDER BY FIELD() ফাংশন ব্যবহার করে নির্দিষ্ট মানवाले রেকর্ডগুলো কাস্টম অর্ডারে প্রথমে দেখানো যায়।
উদাহরণ: টেবিল তৈরি এবং ডেটা ইনসার্ট
mysql> create table DemoTable849(Color varchar(100)); Query OK, 0 rows affected (0.56 sec)
mysql> insert into DemoTable849 values('RED');
Query OK, 1 row affected (0.33 sec)
mysql> insert into DemoTable849 values('ORANGE');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable849 values('BLUE');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable849 values('GREEN');
Query OK, 1 row affected (0.12 sec)
সকল রেকর্ড দেখানো (ডিফল্ট অর্ডার)
mysql> select * from DemoTable849;
+--------+ | Color | +--------+ | RED | | ORANGE | | BLUE | | GREEN | +--------+ 4 rows in set (0.00 sec)
কাস্টম অর্ডার: RED → GREEN → BLUE → ORANGE
mysql> select * from DemoTable849 order by field(Color,'RED','GREEN','BLUE','ORANGE');
+--------+ | Color | +--------+ | RED | | GREEN | | BLUE | | ORANGE | +--------+ 4 rows in set (0.00 sec)
FIELD() ফাংশন ব্যাখ্যা
FIELD(str, str1, str2, ...)-strতালিকার কোন অবস্থানে আছে তা রিটার্ন করে (১-ভিত্তিক)- নাইলে ০ রিটার্ন করে
ORDER BY FIELD(...)- ১, ২, ৩... অর্ডারে সাজায়, ০ (নাই) সবশেষে
ব্যাখ্যা
| Color | FIELD(Color,'RED','GREEN','BLUE','ORANGE') | অর্ডার |
|---|---|---|
| RED | 1 | ১ম |
| GREEN | 2 | ২য় |
| BLUE | 3 | ৩য় |
| ORANGE | 4 | ৪র্থ |
| YELLOW (নেই) | 0 | শেষে |
বিকল্প পদ্ধতি: CASE WHEN
ORDER BY CASE Color
WHEN 'RED' THEN 1
WHEN 'GREEN' THEN 2
WHEN 'BLUE' THEN 3
WHEN 'ORANGE' THEN 4
ELSE 5 END
ব্যবহারিক প্রয়োগ: অর্ডার স্ট্যাটাস: 'PENDING', 'PROCESSING', 'SHIPPED', 'DELIVERED', 'CANCELLED' — এই ক্রমে দেখাতে FIELD() দারুণ কাজ করে।